Qt跨平台问题:在Windows上编译良好,Linux上的链接器错误

时间:2009-08-05 18:40:07

标签: c++ qt gcc linker

我有一些名为“GUI”的Qt代码。通过Qt Creator,我可以编译(使用GCC)它没有任何关于Windows的投诉。但是,当我尝试在Linux上编译它(再次通过Qt Creator使用GCC)时,我收到链接器错误:

  

collect2:ld返回1退出状态。

我使用的唯一非Qt库是STL的矢量库。

5 个答案:

答案 0 :(得分:1)

给定的错误消息只是意味着当它试图将所有目标文件链接到一个可执行文件时,出现了问题;如果切换到Qt Creator中的Compile Output选项卡,您应该能够从链接器本身追踪实际错误消息。它可能很简单,因为无法写入可执行文件应该去的位置(当我尝试重建我仍在运行的应用程序时,我已经发生了这种情况),或者它可能更严重。如果您已经开始添加尚未实现其方法的类,例如。

答案 1 :(得分:0)

通常有三个区域会中断:

  • 检查您的Qt项目文件,看看是否需要添加LIBS += library/path/etc
  • 您没有安装库
  • 如果已安装,请动态修改LD_LIBRARY_PATH=/missing/lib/path:$LD_LIBRARY_PATH ./binary

答案 2 :(得分:0)

确保您的Qt环境已设置,并且您拥有所有库/包依赖项。

然后运行qmake,然后make。如果qmake运行,你应该没问题。

在某些Linux发行版上,您需要专门安装库(包)。一些软件包将允许您运行程序,例如MySQL插件。如果你想编译,你也需要开发包。

例如,在Ubuntu中,您可能需要运行:

sudo apt-get install build-essential
sudo apt-get install libqt4-sql-mysql

答案 3 :(得分:0)

错误:“collect2:ld返回1退出状态”通常在moc未运行在应该运行的文件[特别是任何定义Q_OBJECT的文件]上时返回。检查你的moc是否正常运行。

此外,在Qt Creator中,还有一个“构建信息”标签。仔细阅读它并检查有关此错误的更多信息。

答案 4 :(得分:0)

删除.moc / .obj,您可以再试一次。