编译 Qt-base: error: libQt5Core.so.5: no version information available

Posted

技术标签:

【中文标题】编译 Qt-base: error: libQt5Core.so.5: no version information available【英文标题】:Compiling Qt-base: error: libQt5Core.so.5: no version information available 【发布时间】:2016-01-16 07:41:23 【问题描述】:

我是从源代码 qt-base 编译的。我构建了一个测试(tst_qdom),执行时出现错误。这是ldd的结果:

ldd 测试/auto/xml/dom/qdom/tst_qdom

**tests/auto/xml/dom/qdom/tst_qdom: /usr/lib/x86_64-linux-gnu/libQt5Core.so.5: no version information available (required by tests/auto/xml/dom/qdom/tst_qdom)
tests/auto/xml/dom/qdom/tst_qdom: /usr/lib/x86_64-linux-gnu/libQt5Test.so.5: no version information available (required by tests/auto/xml/dom/qdom/tst_qdom)
tests/auto/xml/dom/qdom/tst_qdom: /usr/lib/x86_64-linux-gnu/libQt5Xml.so.5: no version information available (required by tests/auto/xml/dom/qdom/tst_qdom)**
linux-vdso.so.1 =>  (0x00007ffe5775f000)
libQt5Xml.so.5 => /usr/lib/x86_64-linux-gnu/libQt5Xml.so.5 (0x00007f855e131000)
libQt5Test.so.5 => /usr/lib/x86_64-linux-gnu/libQt5Test.so.5 (0x00007f855df08000)
libQt5Core.so.5 => /usr/lib/x86_64-linux-gnu/libQt5Core.so.5 (0x00007f855d862000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f855d55e000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f855d348000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f855cf83000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f855cd65000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f855cb4c000)
libicui18n.so.52 => /usr/lib/x86_64-linux-gnu/libicui18n.so.52 (0x00007f855c745000)
libicuuc.so.52 => /usr/lib/x86_64-linux-gnu/libicuuc.so.52 (0x00007f855c3cc000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f855c1c8000)
libglib-2.0.so.0 => /lib/x86_64-linux-gnu/libglib-2.0.so.0 (0x00007f855bec0000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f855bcb8000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f855b9b2000)
/lib64/ld-linux-x86-64.so.2 (0x00007f855e36d000)
libicudata.so.52 => /usr/lib/x86_64-linux-gnu/libicudata.so.52 (0x00007f855a145000)
libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007f8559f07000)

有人知道如何解决这个问题吗?谷歌搜索对我没有用。

已编辑:

这是tst_qdom的编译命令:

g++ -c -pipe -O2 -Wall -W -D_REENTRANT -fPIC -DQT_NO_MTDEV -DQT_NO_LIBUDEV -DQT_NO_TSLIB -DQT_NO_LIBINPUT -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -DQT_NO_DEBUG -DQT_XML_LIB -DQT_TESTLIB_LIB -DQT_CORE_LIB -DQT_TESTCASE_BUILDDIR='"/home/pe/qtbase/tests/auto/xml/dom/qdom"' -I. -I../../../../../include -I../../../../../include/QtXml -I../../../../../include/QtTest -I../../../../../include/QtCore -I.moc -I../../../../../mkspecs/linux-g++ -o .obj/tst_qdom.o tst_qdom.cpp

g++ -Wl,-O1 -fuse-ld=gold -Wl,--enable-new-dtags -Wl,-rpath,/usr/local/Qt-5.7.0/lib -o tst_qdom .obj/tst_qdom.o   -L/home/pe/qtbase/lib -lQt5Xml -lQt5Test -lQt5Core -lpthread 

【问题讨论】:

你看到了吗? ***.com/questions/137773/… 是的,但问题没有解决。我在另一台机器上试过,但同样的问题......我忘了评论最后也有错误:./tests/auto/xml/dom/qdom/tst_qdom: relocation error: ./tests/auto/xml /dom/qdom/tst_qdom:符号 ZN5QTest17setMainSourcePathEPKcS1,版本 Qt_5 未在文件 libQt5Test.so.5 中定义,链接时间参考我做了 c++filt ZN5QTest17setMainSourcePathEPKcS1,结果是: QTest::setMainSourcePath(char const*, char const*) 我的想法是你已经用最新版本的 Qt 编译了你的测试,但是当你运行它时,它会从其他地方挑选动态库,我建议你看看你是否有不同版本的 libQt5Core。已安装 so.5 并确保您的程序使用相同版本的所有 Qt 库。 谢谢@Marco。我想问题是它与已安装的库链接,而不是与获得的 qt-base 修订版中的库链接。我的意思是我在 usr/lib/x86_64-linux-gnu/libQt5Core.so.5 中安装了一个版本,在 qt-base 目录中安装了另一个版本:~/qtbase/lib/libQt5Core.so.5,它是与前者联系而不是后者。我安装的版本是5.2.1,qt-base目录下的版本是5.7.0。但我不知道如何指明在哪里选择这些库... 从您的命令行看起来您正在使用 5.7 库进行编译,但是当您运行可执行文件 tst_qdom 时,它可能会找到已安装的 5.2.1,因为我记得可执行文件首先在当前dir,然后在当前 PATH 变量中,除非被 LD_LIBRARY_PATH 覆盖所以我的建议是设置 LD_LIBRARY_PATH=/usr/local/Qt-5.7.0/lib 然后导出 LD_LIBRARY_PATH 【参考方案1】:

您可以永久编辑 ~/.bashrc 并包括以下行

export LD_LIBRARY_PATH='/home/pe/qtbase/lib':$LD_LIBRARY_PATH; 

或在

中做了同样的事情

/etc/bash.bashrc 这对所有用户都是永久的!

【讨论】:

【参考方案2】:

只需根据下面的示例在bashrc 中进行一些更改

export LD_LIBRARY_PATH=/path/to/QT/gcc_64/lib/:$LD_LIBRARY_PATH

【讨论】:

所以我把它放在我的 .bashrc 中,我在这里有一点时间,它可以在执行完其他所有操作后结束吗?它仍然可以正常工作吗?【参考方案3】:

感谢@Marco,我找到了解决方案。他说将 LD_LIBRARY_PATH 设置为 /usr/local/Qt-5.7.0/lib。但是,当我将 LD_LIBRARY_PATH 设置为 /home/pe/qtbase/lib/(我正在编译的版本的 lib 目录)并导出变量时,问题就解决了:

LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/pe/qtbase/lib; export LD_LIBRARY_PATH

希望这对将来的某人有所帮助,并再次感谢 Marco。

【讨论】:

以上是关于编译 Qt-base: error: libQt5Core.so.5: no version information available的主要内容,如果未能解决你的问题,请参考以下文章

qt链接在lib\libqt5cored.a很慢

加载共享库时出错:libQt5Multimedia.so.5:无法打开共享对象文件:没有这样的文件或目录

libQt5Core.so:未定义引用`__cxa_throw_bad_array_new_length@CXXABI_1.3.8

PyQt5 QtQuick 错误 - “libQt5Network 未定义符号:_Z24qt_subtract_from_timeoutii”

部署后的 Linux qt 应用程序 - 符号查找错误:libQt5Core.so.5 未定义符号:uncv_getDefaultName_56

在树莓派上原生构建 qt5.7.1 得到错误:/usr/lib/arm-linux-gnueabihf/libQt5Quick.so.5: 未定义对 `QV8Engine::toVariant 的引用