MinGW编译“文件无法识别:文件格式无法识别”

2023-12-13

我正在尝试编译 C++ 程序,但遇到一些问题。特别是,当我使用 x86_64-w64-mingw32-gcc 作为编译器时,它在编译过程中抱怨说“tmp/src/libfastms/solver/solver.cpp.o:文件无法识别:文件格式无法识别”。

这是我的 makefile(不是我的,我正在尝试使这个 makefile 适应 cygwin 环境)https://pastebin.com/vgnVYJUL

这是我运行 make 时的控制台输出:

x86_64-w64-mingw32-gcc -c -o tmp/src/libfastms/solver/solver.cpp.o src/libfastms/solver/solver.cpp  -Wall -O3 -m64  -Isrc/libfastms  -DDISABLE_OPENMP -DDISABLE_OPENCV -DDISABLE_CUDA
x86_64-w64-mingw32-gcc -c -o tmp/src/libfastms/solver/solver_base.cpp.o src/libfastms/solver/solver_base.cpp  -Wall -O3 -m64  -Isrc/libfastms  -DDISABLE_OPENMP -DDISABLE_OPENCV -DDISABLE_CUDA
x86_64-w64-mingw32-gcc -c -o tmp/src/libfastms/solver/solver_host.cpp.o src/libfastms/solver/solver_host.cpp  -Wall -O3 -m64  -Isrc/libfastms  -DDISABLE_OPENMP -DDISABLE_OPENCV -DDISABLE_CUDA
x86_64-w64-mingw32-gcc -c -o tmp/src/libfastms/util/has_cuda.cpp.o src/libfastms/util/has_cuda.cpp  -Wall -O3 -m64  -Isrc/libfastms  -DDISABLE_OPENMP -DDISABLE_OPENCV -DDISABLE_CUDA
x86_64-w64-mingw32-gcc -c -o tmp/src/libfastms/util/image_mat.cpp.o src/libfastms/util/image_mat.cpp  -Wall -O3 -m64  -Isrc/libfastms  -DDISABLE_OPENMP -DDISABLE_OPENCV -DDISABLE_CUDA
ld -r -o tmp/src/libfastms/libfastms.o tmp/src/libfastms/solver/solver.cpp.o tmp/src/libfastms/solver/solver_base.cpp.o tmp/src/libfastms/solver/solver_host.cpp.o tmp/src/libfastms/util/has_cuda.cpp.o tmp/src/libfastms/util/image_mat.cpp.o
tmp/src/libfastms/solver/solver.cpp.o: file not recognized: File format not recognized
Makefile:167: recipe for target 'tmp/src/libfastms/libfastms.o' failed
make: *** [tmp/src/libfastms/libfastms.o] Error 1

其他一些注意事项:

  • 我用g++编译时没有这个问题(似乎只有minGW)
  • 此问题的常见解决方案是清除残留目标文件的目录。这是行不通的。
  • 另一个常见原因是尝试编译 .h 文件。显然我不会这样做。

提前致谢。


您正在使用 64 位编译器驱动程序编译目标文件,w64-mingw32-gcc, 与-m64您明确指示它生成 64 位代码(不必要, 因为这是它的默认值)。但您正在链接的 32 位链接器不支持 了解 64 位目标文件。

发生这种情况是因为在你的 makefile 中你异常地调用ld明确地为您的增量solver连锁:

COMMAND_LINK_SOLVER=ld -r -o $@ $^

而不是以通常的方式将链接委托给编译器驱动程序,并且 32 位ld在您的中找到了来自不同工具链的PATH前 属于您的 64 位mingw-w64工具链。

为了避免这种情况,请像平常一样通过编译器驱动程序调用链接器,这对于您来说solver联动的意思是:

COMMAND_LINK_SOLVER=$(GXX) -Wl,-r -o $@ $^

您可以依赖w64-mingw32-gcc调用ld是随它一起安装的。

无需更正您的main链接,因为它已经以正确的方式完成了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MinGW编译“文件无法识别:文件格式无法识别” 的相关文章

随机推荐

  • MacOS 上的 Python“dyld:库未加载”- 错误

    我正在尝试运行一个 python 脚本 该脚本执行一些 API 调用和 Kafka 逻辑 但出现以下错误 dyld Library not loaded executable path Python Tried brew update br
  • 拖动时将标记/图钉保持在地图中间

    我希望当用户在地图上拖动时 标记 图钉可以滚动并位于地图的中心 我有一个简单的 jsfiddle http jsfiddle net upsidown 5xd1Lbpc 6 当用户停止拖动时 图钉将落到地图的中心 但我希望图钉随着拖动而移动
  • PayPal REST API“列出付款”不返回任何条目

    我正在尝试使用 PayPal REST API 来获取付款列表 通常这些付款是通过 eBay 进行的 当我尝试沙箱时 我可以获得一个令牌 然后按预期获得付款列表 但当我切换到实时列表时 列表总是空的 例如 使用卷曲 curl https a
  • 如何在 Android 上获取 google 用户名?

    我看过有关使用的参考AccountManager like 通过 Android 访问 Google 帐户 ID 用户名 不过好像是为了抢authtoken 我只需要访问用户名 不需要密码或任何身份验证令牌 我使用的是android 2 1
  • 为什么 PHP 严格类型允许函数参数的类型错误?

    我正在使用 PHP 7 4 16 我启用了strict types在我的 PHP 文件中 认为它会阻止传递string函数的参数期望int通过扔一个TypeError 然而 该函数实际上接受string并将其强制为int 但是 如果我在函数
  • Bootstrap Offcanvas 导航 - 关闭时不重置背景

    我在 offcanvas div 中有一个很长的链接列表 这些在表单中是因为我想使用它们来导航很长的背景页面 实际上 它是一个目录 画布愉快地弹出 导航链接有效 将背景页面跳转到正确的位置 欢呼 但是 当您选择并链接并导航背景页面到某个位置
  • 导出时 React.Component 是默认扩展吗?

    我正在浏览一些 React 项目 有时会看到 export default gt 但其他时候我看到 export default class Entry extends React Component 两者之间有什么区别吗 导出是否自动扩展
  • 转换 QString 以在 SQL 查询中使用

    我想根据用户输入生成 SQL 查询 以便将一些数据插入数据库 用户可以输入任何内容 Qt 有没有办法将此类用户输入转换为字符串类型值字段 用户可以输入任何内容 这并没有给我们太多参考 但我可以给你一个例子来说明如何设置基本的插入查询 I a
  • 当对存在的目录使用 ListDirectoryDe​​tails 时,FtpWebRequest 返回“550 文件不可用(例如,文件未找到,无法访问)”

    我有一个恼人的问题 阻止我在 FTP 中获取所需的文件 该文件可能有不同的名称 因此我需要首先访问该文件夹并列出其中的文件 然后直接向该文件发出请求 我的问题是 我可以在 Filezilla 中访问此文件 并且也可以完美地发现该文件夹 但是
  • jQuery Mobile 列表上的多个拆分按钮

    jQuery 移动列表中是否可以有多个拆分按钮 我尝试这样做 ul li a href 1 a a href a a href a li ul 但这不起作用 将链接包装在 div div
  • Android 中有波斯(Shamsi 或 Jalali)日历的库或算法吗? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我想转换公历 西方 日期至Persian Shamsi 日期 反之亦然 适用于所有版本的 Android 有没有完整可靠的库或算法 我使用这个算法很
  • 圆形区域内的查询点

    Here is a picture to illustrate the problem 图中有一些特征点显示为蓝色十字 我知道坐标 x y 对于所有功能 现在我想查询哪些要素在圆圈区域 绿色圆圈 内 实际上 大约有 500 个特征和 300
  • VStack 有最大限制吗?

    我从一个干净的项目开始 在 VStack 中添加了 5 个按钮和 5 个垫片 一切都很好 当我在底部添加第 6 个间隔符时 代码突然无法编译 并出现错误 对成员 buildBlock 的引用不明确 是什么导致了这个错误 这是与 SwiftU
  • PairRDD 的总和值

    我有一个 RDD 类型 dataset org apache spark rdd RDD String Double MapPartitionRDD 26 这相当于 Pedro 0 0833 Hello 0 001828 我想总结所有的价值
  • 触发系统音量条

    是否可以通过按我的按钮Activity让音量条出现 音量条是当您按下硬件音量按钮之一时出现的视图 是否有 API 函数可以执行此操作 或者我是否必须手动重新创建该视图 如果调用 setStreamVolume 请传递标志 FLAG SHOW
  • 无法在 UserControl 上设置 x:Name="Root"

    我尝试将 x Name 属性设置为 UserControl 的定义 以便稍后将其用于内部绑定
  • Spark:线程“主”java.lang.ClassNotFoundException中的异常:com.mysql.jdbc.Driver

    我在 Spark 中编写了简单的程序 将数据帧写入 mySql 中的表 程序如下 import org apache spark SparkConf import org apache spark SparkContext import o
  • Sparql查询:查找具有相同属性对象的对象

    假设我们有一个如下所示的数据集 person wantsCD cd1 wantsCD cd2 storeA sellsCD cd1 sellsCD cd2 sellsCD cd3 storeB sellsCD cd1 sellsCD cd1
  • Cucumber:如何从外部 Excel 文件中读取场景大纲的示例

    我的要求是从外部 Excel 文件读取示例 而不是将其硬编码到功能文件中 我有 100 多个示例 这些示例很难在功能文件中维护 你能帮我解决这个问题吗 这是我的场景 Scenario Outline Browser Test When I
  • MinGW编译“文件无法识别:文件格式无法识别”

    我正在尝试编译 C 程序 但遇到一些问题 特别是 当我使用 x86 64 w64 mingw32 gcc 作为编译器时 它在编译过程中抱怨说 tmp src libfastms solver solver cpp o 文件无法识别 文件格式