LD需要DWARF版本3或2,但我的版本是4

时间:2014-01-12 02:54:51

标签: gcc qt5 ld taglib dwarf

经过几个小时的研究(并尝试)如何在Qt(windows)上安装id3lib,但没有成功,我决定使用TagLib's library

我跟着this tutorial为Qt构建兼容版本的taglib,但还有另一个问题(full log here):

  ...

  C:\MinGW\bin\..\lib\gcc\mingw32\3.4.5\..\..\..\..\mingw32\bin\ld.exe: Dwarf
  Error: found dwarf version '4', this reader only handles version 2 and 3
  information.

  C:/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../mingw32/lib/crt2.o:crt1.c:(.text+0x1f1):
  undefined reference to `__chkstk_ms'

  ...

在CMake中,我做了configure> MinGW Makefiles

任何人都可以告诉我们如何修复它吗?

环境:

  • Windows 7(64位);
  • CMake 2.8.12.1;
  • TagLib 1.9.1;
  • GCC 3.4.5;
  • Qt 5.1.1。

1 个答案:

答案 0 :(得分:5)

问题源于你使用非常过时的GCC这一事实,而你的Qt二进制文件最有可能是用尖端的GCC(或接近它的那个)构建的。例如,正如错误消息所示,DWARF在您当前GCC的情况下已过时,并且与您当前Qt使用的版本不兼容。此外,即使它不会,你仍然会遇到二进制不兼容的其他问题,因为你基本上混合了不同主要版本号的编译器,强烈建议不要这样做。请注意,您的问题根本与CMake无关。您可以在错误消息中自己查看,即错误由ld报告,来自(您过时的)GCC工具链的链接器实用程序。总而言之,您唯一的选择是更新GCC,理想情况下更新为用于构建当前Qt的GCC。