QtCreator找不到Qt_5。

6

你好,我在Ubuntu 16.04下启动qtcreator时遇到了问题。报告的错误是:

qtcreator: /usr/bin/../lib/x86_64-linux-gnu/qtcreator/../libQt5Gui.so.5: version `Qt_5_PRIVATE_API' not found (required by /usr/lib/libQt5Widgets.so.5)
qtcreator: /usr/bin/../lib/x86_64-linux-gnu/qtcreator/../libQt5Gui.so.5: version `Qt_5' not found (required by /usr/lib/libQt5Widgets.so.5)

我尝试了其他帖子提供的不同解决方案,但是没有成功。能否有人帮忙或者解释一下到底出了什么问题?几天前我还能够运行qtcreator,但是今天尝试却出现了这个错误。我认为这可能与某个应用程序的安装有关,不幸的是我无法说出是哪一个,我不得不安装几个应用。

以下是更多信息:

qmake --version
QMake version 3.0
Using Qt version 5.5.1 in /usr/lib/x86_64-linux-gnu

我只安装了来自官方仓库的qt版本,已经安装了以下文件:
  • /usr/lib/libQt5Core.so.5.7.0
  • /usr/lib/x86_64-linux-gnu/libQtCore.so.4.8.7
  • /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.5.1
可能存在配置问题吗?有没有重新配置路径的方法?
同样值得注意的是,此时我无法运行qtcreator,也无法从ros-kinetic-package中运行rviz
rviz
This application failed to start because it could not find or load the Qt platform plugin "xcb"
in "".

Reinstalling the application may fix this problem.
Aborted (core dumped)

我尝试了清除rviz,ros,qtcreator并重新安装它们,我安装了qt5-default,但无法解决我的问题。 谢谢你的帮助。
编辑:好的,我花了一些时间,再次尝试了这里的解决方案:Error on execution -version `Qt_5' not found required by,这部分解决了问题。使用LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu/ qtcreator我可以再次启动qtcreator。但这当然并没有完全解决问题,我该如何重新配置它呢。
编辑2:LD_LIBRARY_PATH的解决方案对于rviz的问题没有帮助,它告诉我:
LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu/ rviz
rviz: error while loading shared libraries: librviz.so: cannot open shared object file: No such file or directory

然后我尝试了

LD_LIBRARY_PATH=/opt/ros/kinetic/lib rviz

有趣的是,它使得rviz活了起来。

所以看起来我的路径混乱了,问题是为什么以及如何修复它们(将Qt5.7库和链接移动到另一个目录是否有帮助)?

(最后需要注意的是,如果我没有在调用之前添加LIBRARY_PATH,其他ros工具如rqt_console、rqt_plot等也会失败。)

编辑3: 所以我想我发现了更多的内部信息。我有一台来自FLIR公司的相机,它使用一个名为spinnaker的库。要安装它,必须安装一堆deb包。其中之一是spinview_qt-.deb。它包含QT5.7版本并安装到/usr/lib。

dpkg --contents spinview-qt-1.10.0.31_amd64.deb 
drwxr-xr-x root/root         0 2017-12-21 23:31 ./
drwxr-xr-x root/root         0 2017-12-21 23:31 ./usr/
drwxr-xr-x root/root         0 2017-12-21 23:31 ./usr/share/
drwxr-xr-x root/root         0 2017-12-21 23:31 ./usr/share/pixmaps/
-rw-r--r-- root/root    129041 2017-12-21 23:31 ./usr/share/pixmaps/SpinnakerIcon.ico
drwxr-xr-x root/root         0 2017-12-21 23:31 ./usr/share/applications/
-rw-r--r-- root/root       154 2017-12-21 23:31 ./usr/share/applications/spinview.desktop
drwxr-xr-x root/root         0 2017-12-21 23:31 ./usr/share/doc/
drwxr-xr-x root/root         0 2017-12-21 23:31 ./usr/share/doc/spinview-qt1/
-rw-r--r-- root/root      9190 2017-12-21 23:31 ./usr/share/doc/spinview-qt1/Apache_2.0.txt
-rw-r--r-- root/root    623763 2017-12-21 23:31 ./usr/share/doc/spinview-qt1/Spinnaker-Open-Source-Licenses.pdf
-rw-r--r-- root/root      1485 2017-12-21 23:31 ./usr/share/doc/spinview-qt1/FreeBSD.txt
-rw-r--r-- root/root     27032 2017-12-21 23:31 ./usr/share/doc/spinview-qt1/lgpl_2.1.txt
-rw-r--r-- root/root      1337 2017-12-21 23:31 ./usr/share/doc/spinview-qt1/boost_license.txt
-rw-r--r-- root/root       981 2017-12-21 23:31 ./usr/share/doc/spinview-qt1/FLIR_license.txt
-rw-r--r-- root/root      1597 2017-12-21 23:31 ./usr/share/doc/spinview-qt1/genicam_license.txt
-rw-r--r-- root/root       251 2017-12-21 23:31 ./usr/share/doc/spinview-qt1/changelog.gz
-rw-r--r-- root/root      5387 2017-12-21 23:31 ./usr/share/doc/spinview-qt1/OpenTK_license.txt
-rw-r--r-- root/root     17577 2017-12-21 23:31 ./usr/share/doc/spinview-qt1/freeimage_license.txt
-rw-r--r-- root/root     20993 2017-12-21 23:31 ./usr/share/doc/spinview-qt1/WPCC_BY_SA_license.txt
-rw-r--r-- root/root      7816 2017-12-21 23:31 ./usr/share/doc/spinview-qt1/lgpl_3.0.txt
-rw-r--r-- root/root     25864 2017-12-21 23:31 ./usr/share/doc/spinview-qt1/lgpl_2.0.txt
-rw-r--r-- root/root      2232 2017-12-21 23:31 ./usr/share/doc/spinview-qt1/CLALLSERIAL_license.txt
-rw-r--r-- root/root     10439 2017-12-21 23:31 ./usr/share/doc/spinview-qt1/CPOL_1.02.txt
drwxr-xr-x root/root         0 2017-12-21 23:31 ./usr/lib/
-rw-r--r-- root/root   5339752 2017-12-21 22:48 ./usr/lib/libQt5Core.so.5.7.0
-rw-r--r-- root/root  25047100 2017-12-21 22:48 ./usr/lib/libicudata.so.56.1
-rw-r--r-- root/root   1365560 2017-12-21 22:48 ./usr/lib/libQt5XcbQpa.so.5.7.0
-rw-r--r-- root/root   1432320 2017-12-21 22:48 ./usr/lib/libQt5Network.so.5.7.0
-rw-r--r-- root/root   5909528 2017-12-21 22:48 ./usr/lib/libQt5Gui.so.5.7.0
-rw-r--r-- root/root    356208 2017-12-21 22:48 ./usr/lib/libQt5OpenGL.so.5.7.0
-rw-r--r-- root/root   6614408 2017-12-21 22:48 ./usr/lib/libQt5Widgets.so.5.7.0
-rw-r--r-- root/root   3374854 2017-12-21 22:48 ./usr/lib/libicui18n.so.56.1
-rw-r--r-- root/root   2070162 2017-12-21 22:48 ./usr/lib/libicuuc.so.56.1
-rw-r--r-- root/root    527104 2017-12-21 22:48 ./usr/lib/libQt5DBus.so.5.7.0
drwxr-xr-x root/root         0 2017-12-21 23:31 ./usr/bin/
-rwxr-xr-x root/root    852544 2017-12-21 23:07 ./usr/bin/SpinView_QT
drwxr-xr-x root/root         0 2017-12-20 02:45 ./usr/bin/platforms/
-rw-r--r-- root/root    303544 2017-12-20 02:45 ./usr/bin/platforms/libqlinuxfb.so
-rw-r--r-- root/root     10192 2017-12-20 02:45 ./usr/bin/platforms/libqxcb.so
-rw-r--r-- root/root    141072 2017-12-20 02:45 ./usr/bin/platforms/libqoffscreen.so
-rw-r--r-- root/root    176720 2017-12-20 02:45 ./usr/bin/platforms/libqminimalegl.so
-rw-r--r-- root/root    140592 2017-12-20 02:45 ./usr/bin/platforms/libqminimal.so
-rw-r--r-- root/root      9968 2017-12-20 02:45 ./usr/bin/platforms/libqeglfs.so
-rwxr-xr-x root/root        70 2017-12-20 02:47 ./usr/bin/spinview
lrwxrwxrwx root/root         0 2017-12-21 23:31 ./usr/share/doc/spinview-qt1/LICENSE -> FLIR_license.txt
lrwxrwxrwx root/root         0 2017-12-21 22:48 ./usr/lib/libQt5XcbQpa.so.5 -> libQt5XcbQpa.so.5.7.0
lrwxrwxrwx root/root         0 2017-12-21 22:48 ./usr/lib/libQt5Gui.so.5.7 -> libQt5Gui.so.5.7.0
lrwxrwxrwx root/root         0 2017-12-21 22:48 ./usr/lib/libQt5XcbQpa.so.5.7 -> libQt5XcbQpa.so.5.7.0
lrwxrwxrwx root/root         0 2017-12-21 22:48 ./usr/lib/libQt5Network.so.5 -> libQt5Network.so.5.7.0
lrwxrwxrwx root/root         0 2017-12-21 22:48 ./usr/lib/libQt5Gui.so -> libQt5Gui.so.5.7.0
lrwxrwxrwx root/root         0 2017-12-21 22:48 ./usr/lib/libQt5XcbQpa.so -> libQt5XcbQpa.so.5.7.0
lrwxrwxrwx root/root         0 2017-12-21 22:48 ./usr/lib/libQt5OpenGL.so.5.7 -> libQt5OpenGL.so.5.7.0
lrwxrwxrwx root/root         0 2017-12-21 22:48 ./usr/lib/libQt5Network.so -> libQt5Network.so.5.7.0
lrwxrwxrwx root/root         0 2017-12-21 22:48 ./usr/lib/libQt5Gui.so.5 -> libQt5Gui.so.5.7.0
lrwxrwxrwx root/root         0 2017-12-21 22:48 ./usr/lib/libQt5DBus.so -> libQt5DBus.so.5.7.0
lrwxrwxrwx root/root         0 2017-12-21 22:48 ./usr/lib/libQt5Core.so -> libQt5Core.so.5.7.0
lrwxrwxrwx root/root         0 2017-12-21 22:48 ./usr/lib/libQt5Widgets.so.5 -> libQt5Widgets.so.5.7.0
lrwxrwxrwx root/root         0 2017-12-21 22:48 ./usr/lib/libQt5OpenGL.so -> libQt5OpenGL.so.5.7.0
lrwxrwxrwx root/root         0 2017-12-21 22:48 ./usr/lib/libicuuc.so.56 -> libicuuc.so.56.1
lrwxrwxrwx root/root         0 2017-12-21 22:48 ./usr/lib/libQt5Network.so.5.7 -> libQt5Network.so.5.7.0
lrwxrwxrwx root/root         0 2017-12-21 22:48 ./usr/lib/libQt5Core.so.5.7 -> libQt5Core.so.5.7.0
lrwxrwxrwx root/root         0 2017-12-21 22:48 ./usr/lib/libicudata.so.56 -> libicudata.so.56.1
lrwxrwxrwx root/root         0 2017-12-21 22:48 ./usr/lib/libQt5DBus.so.5 -> libQt5DBus.so.5.7.0
lrwxrwxrwx root/root         0 2017-12-21 22:48 ./usr/lib/libQt5Widgets.so -> libQt5Widgets.so.5.7.0
lrwxrwxrwx root/root         0 2017-12-21 22:48 ./usr/lib/libQt5Widgets.so.5.7 -> libQt5Widgets.so.5.7.0
lrwxrwxrwx root/root         0 2017-12-21 22:48 ./usr/lib/libQt5DBus.so.5.7 -> libQt5DBus.so.5.7.0
lrwxrwxrwx root/root         0 2017-12-21 22:48 ./usr/lib/libicui18n.so.56 -> libicui18n.so.56.1
lrwxrwxrwx root/root         0 2017-12-21 22:48 ./usr/lib/libQt5OpenGL.so.5 -> libQt5OpenGL.so.5.7.0
lrwxrwxrwx root/root         0 2017-12-21 22:48 ./usr/lib/libQt5Core.so.5 -> libQt5Core.so.5.7.0

我认为问题可能是Ubuntu在查找/ usr / bin之前尝试在/ usr / lib / x86_64-linux-gnu中查找QT5。 所以我的问题是,我如何实现Ubuntu再次使用QT5.5.1版本作为默认版本? 我能够进行配置吗,还是现在必须始终添加LD_LIBRARY_PATH? 如何卸载QT5.7库? 只需删除上面列出的文件即可吗?

1
你需要使用 ldd <executable> 命令来查看可执行文件尝试加载的库的确切路径。此外,要更改这些路径,可以在 /etc/ld.so.conf.d 中添加一个 <whatever>.conf 文件,每个库路径占一行,然后运行 ldconfig 命令。这些文件的处理顺序是按字母顺序排列的,它们应该在 /lib/usr/lib 之前但在命令行中指定的 LD_LIBRARY_PATH 之后。 - BillyJoe
4个回答

5
Qtcreator和rviz无法正常工作,因为它们需要来自/usr/lib/x86_64-linux-gnu的qt libs,但实际链接却使用了/usr/lib/libQt*(您可以使用ldd $(which qtcreator)ldd $(which rviz)进行双重检查)。这个混乱的情况确实与您的相机包安装有很大关系。
我看到解决这个问题的几种方法: 1. 看起来你的链接器优先选择/usr/lib而不是/usr/lib/x86_64-linux-gnu。请检查您的LD_LIBRARY_PATH:
echo $LD_LIBRARY_PATH

如果它包含/usr/lib,请尝试摆脱它(您必须跟踪更新LD_LIBRARY_PATH的位置-它在.bashrc还是其他地方?也许在/etc/ld.so.conf.d?)

2..bashrc中设置LD_LIBRARY_PATH以指向有效的qt目录。记住不要覆盖变量,而是扩展它(将其放在~/.bashrc的末尾):

export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu/:$LD_LIBRARY_PATH

然后重新加载.bashrc

. ~/.bashrc

在你的实验中,当启动qtcreator和rviz时,你进行了覆盖,所以这两个应用程序中只有一个能够工作,这取决于你设置的LD_LIBRARY_PATH。或者,你可以在/etc/ld.so.conf.d/中添加/usr/lib/x86_64-linux-gnu/路径 - 只需创建一个新的.conf文件并加入qt路径,然后重新加载所有内容。
sudo ldconfig

使用此方法可能会破坏您的相机软件包,因为现在它将链接到新路径中的库。

3. 暂时将相机软件包提供的Qt库 (/usr/lib/libQt*) 移动到另一个位置,并检查spinview是否可与qt 5.7以外的其他版本正常工作。如果可以 - 您可以自由删除/usr/lib/中的qt5.7库,因为它们不再需要 - 这里不需要进行复杂的卸载过程。您始终可以使用相机的.deb软件包恢复它。


非常感谢您详细的回答,它对我帮助很大。最后,在我的.bashrc中有一个指向/usr/lib的链接,我之前并不知道。删除它后问题得到了解决。但是,您能否提供一些关于/etc/ld.so.conf.d/的信息或相关链接?它的工作原理是什么,这个目录的目的是什么? - Martin Herrmann

3

我曾经遇到了类似的问题,最终是通过运行"LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu/ qtcreator"而不是仅仅运行"qtcreator"来解决的。首先感谢您的回答。

以下是我深入理解问题所采取的一些步骤:

  • 通过运行"ldd -v /usr/local/Qt/5.7/gcc_64/lib/libQt5Widgets.so.5"(指定在“required by”错误消息中的libQt5Widgets.so.5的绝对路径),检查链接到qtcreator的库文件
  • 通过运行"sudo find / -name libQt5Widgets.so*"找出系统中安装的版本。结果显示我安装了三个版本(5.5.1、5.7.1和5.11.1)。目前,qtcreator使用了5.7.1的一个版本(与find的结果进行比较)
  • 通常建议同时安装qt5-default和qtcreator(都使用sudo apt install)。运行"dpkg -s qt5-default"显示它的版本为5.5.1。因此,qtcreator可能想要使用5.5.1库版本(即使我也希望它能够使用更高版本的库)
  • 通过环境变量LD_LIBRARY_PATH指定5.5.1库文件的路径,使qtcreator使用这些库文件,即运行"LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu/ qtcreator"

0

QtCreator自带所有支持库,例如:

$QTDIR/Tools/QtCreator/lib/Qt/lib/libQt5XcbQpa.so.5.15.2

QTDIR指向您的QT安装位置。因此,您可以执行以下操作:

LD_LIBRARY_PATH=$QTDIR/Tools/QtCreator/lib/Qt/lib $QTDIR/Tools/QtCreator/bin/qtcreator

或者使用不同的方法添加到LD_LIBRARY_PATH。


-2

我刚刚解决了这个问题。试试这个:

gedit ~/.bashrc

export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH

保存文件。然后,

source ~/.bashrc

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接