【发布时间】:2017-12-18 01:43:42
【问题描述】:
我最近更新了所有 msys2 包,现在我无法构建我的项目。
链接 .dll 之一时发生错误 - target_library.dll。
我不清楚错误消息。状态 5 是什么意思?
collect2.exe: 错误: ld 返回 5 退出状态
完整信息:
g++ -Wl,-s,--relax,--gc-sections -shared -Wl,-subsystem,windows -mthreads -Wl,--out-implib,C:/msys64/workspace/Project_Root_Directory/project/src/../build/release/plugins/libtarget_library.dll.a -o ../../../../build/release/plugins/target_library.dll object_script.target_library.Release -lglu32 -lopengl32 -luser32 -LC:/msys64/workspace/Project_Root_Directory/project/build/release -LC:/msys64/workspace/Project_Root_Directory/project/third-party/out/lib -LC:/msys64/workspace/Project_Root_Directory/project/deps/lib -lexif -ldecimal -lsqlite3 -lutils -LC:/Python35/libs -lpython35 -lkmlbase -lkmlengine -lkmldom -lkmlxsd -lminizip -luriparser -lkmlconvenience -lcore -lrender -lraster -lgui -LC:/msys64/workspace/Project_Root_Directory/project/deps/lib/target_library/win64 -LC:/msys64/mingw64/lib C:/msys64/mingw64/lib/libQt5Widgets.dll.a C:/msys64/mingw64/lib/libQt5WinExtras.dll.a C:/msys64/mingw64/lib/libQt5Gui.dll.a C:/msys64/mingw64/lib/libQt5Network.dll.a C:/msys64/mingw64/lib/libQt5Concurrent.dll.a C:/msys64/mingw64/lib/libQt5Xml.dll.a C:/msys64/mingw64/lib/libQt5Core.dll.a collect2.exe: error: ld returned 5 exit status make[4]: *** [Makefile.Release:159: ../../../../build/release/plugins/target_library.dll] Error 1 make[4]: Leaving directory '/workspace/Project_Root_Directory/project/src/modules/plugins/target_library' make[3]: Leaving directory '/workspace/Project_Root_Directory/project/src/modules/plugins/target_library' make[2]: *** [Makefile:384: sub-target_library-make_first] Error 2 make[2]: Leaving directory '/workspace/Project_Root_Directory/project/src/modules/plugins' make[1]: *** [Makefile:297: sub-plugins-make_first] Error 2 make[1]: Leaving directory '/workspace/Project_Root_Directory/project/src/modules' make: *** [Makefile:44: sub-modules-make_first] Error 2
gcc 7.1.0、Qt5 5.9.1、qmake、Win7 x64
【问题讨论】:
-
您还没有发布链接器错误诊断,只是“那行不通。再见”尾声。将失败的
g++ ...命令的完整构建日志发布到末尾。 -
@MikeKinghan 完整的构建日志占用超过 12Mb。这是一个巨大的工程。我想链接命令本身就足够了。
-
只是从失败的 g++ ... 命令到上述结尾的完整构建日志。
-
@MikeKinghan 链接失败。它在原始帖子中。在此之前,已经成功创建了一堆目标文件。
-
我想很多人都赞成这个,因为我们以前听说过或看到过这个错误。是的,有时 ld 只是失败而没有给出错误消息。也许您应该只使用不同的编程环境。但是如果你真的想修复 MSYS2,我可能会从尽可能减少测试用例开始。理想情况下,您只需从几个简单的源文件开始,然后运行一些 GCC 命令来产生错误。然后你可以使用
-v来查看gcc是如何调用ld的,你可以自己调用它。然后,您可以使用 gdb 调试ld(调试版本为ld)。