编译QT程序时未定义的引用错误

时间:2012-02-15 08:52:22

标签: qt

我刚刚在我的redhat enterprise linux 5.6上安装了QtSDK 1.2。在编译QT程序时,我遇到了以下错误:

[root@stack example1]# make
g++ -m64 -Wl,-O1 -Wl,-rpath,/opt/QtSDK/Desktop/Qt/4.8.0/gcc/lib -o example1 fac1.o    -L/opt/QtSDK/Desktop/Qt/4.8.0/gcc/lib -lQtGui -lQtCore -lpthread 
/opt/QtSDK/Desktop/Qt/4.8.0/gcc/lib/libQtCore.so: undefined reference to `g_main_context_push_thread_default'
/opt/QtSDK/Desktop/Qt/4.8.0/gcc/lib/libQtCore.so: undefined reference to `inotify_init1@GLIBC_2.9'
/opt/QtSDK/Desktop/Qt/4.8.0/gcc/lib/libQtGui.so: undefined reference to `pipe2@GLIBC_2.9'
/opt/QtSDK/Desktop/Qt/4.8.0/gcc/lib/libQtCore.so: undefined reference to `g_main_context_pop_thread_default'
/opt/QtSDK/Desktop/Qt/4.8.0/gcc/lib/libQtGui.so: undefined reference to `FcFreeTypeQueryFace'
/opt/QtSDK/Desktop/Qt/4.8.0/gcc/lib/libQtGui.so: undefined reference to `FT_Library_SetLcdFilter'
/opt/QtSDK/Desktop/Qt/4.8.0/gcc/lib/libQtGui.so: undefined reference to `__longjmp_chk@GLIBC_2.11'
collect2: ld returned 1 exit status
make: *** [example1] Error 1
[root@stack example1]#

似乎g ++编译器使用所有正确的选项。因为我在rhel 5.6上安装了QtSDK 1.2,我已将libstdc ++。so.6.0.10复制到/ usr / lib64并将libstdc ++。so.6重新链接到libstdc ++。so.6.0.10,因为QtSDK在libstdc ++中需要GLIBCXX_3.4.9符号图书馆。我认为这可能是问题的根源。但我不确定。有什么建议吗?提前谢谢。

1 个答案:

答案 0 :(得分:0)

我的回答是多个问题:

  • 您是64位建筑吗?如果不是为什么使用64个库?
  • 复制的库是64个版本吗?
    • 如果是这种情况,为什么需要复制它们,/usr/lib64
    • 中应该已经存在标准库
    • 如果情况并非如此,则错误是合法的。
  • 你是如何编制Qt的?如果您的Qt库真的是64位,那么这意味着环境设置已经正确。