【发布时间】:2020-07-08 22:29:31
【问题描述】:
正如标题所说,我一直在尝试交叉编译一个相当大的项目,其中包含相当多的依赖项(静态库和动态库)。我已经使用 MinGW-w64 成功交叉编译了每个依赖项,将包含和库搜索路径设置为它们的 MinGW 对应项(/usr/x86_64-w64-mingw32/lib & include),但在链接步骤 MinGW 抛出错误对于 printf 的每次调用(当然包括 stdio.h )。错误如下:
/usr/bin/x86_64-w64-mingw32-ld: ./obj/XXXX.o:/usr/share/mingw-w64/include/stdio.h:352: undefined reference to `__imp___acrt_iob_func'
(其中“XXXX”是我项目中的文件名)
此错误以完全相同的方式重复(对象文件名除外)。链接命令如下所示:
/usr/bin/x86_64-w64-mingw32-g++ -o bin/ReleaseWin/Project @[file with object file names] -L. -L/usr/x86_64-w64-mingw32/lib/ [linking some dependencies (boost, openGL, SDL2, etc.)...] -m64 -flto
我一直在寻找解决方案(甚至是有同样问题的人)但无济于事。除了常规库之外,我从来没有精通链接,所以如果您需要更多信息,请询问。
提前致谢:)
额外信息:
- 该项目之前已经成功交叉编译(从 Linux 到 Windows),此后我没有添加/删除任何依赖项。
- 我的MinGW-w64版本是7.0.0
【问题讨论】:
-
类似问题可能与版本相关github.com/rust-lang/rust/issues/47048
-
那些看起来很像,我去看看
标签: c++ linker cross-compiling mingw-w64