【问题标题】:qtcreator Qt_5 not found未找到 qtcreator Qt_5
【发布时间】:2018-05-17 16:01:45
【问题描述】:

您好,我在 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/lib/x86_64-linux-gnu 之前尝试在 /usr/bin 中查找 QT5。所以我的问题是,如何再次使用 QT5.5.1 版本作为默认版本来实现 Ubuntu?我可以配置它还是必须现在总是添加 LD_LIBRARY_PATH?如何卸载 QT5.7 库?只删除上面列出的文件?

【问题讨论】:

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

标签: qt5 qt-creator


【解决方案1】:

Qtcreator 和 rviz 不起作用,因为它们需要来自 /usr/lib/x86_64-linux-gnu 的 qt 库,而是使用 /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

在您的实验中,您在启动 qtcreatorrviz 时进行了覆盖,因此这两个应用中只有一个在运行取决于您设置的 LD_LIBRARY_PATH

或者,您可以在 /etc/ld.so.conf.d/ 中添加 /usr/lib/x86_64-linux-gnu/ 路径 - 只需使用 qt 路径创建一个新的 .conf 文件并使用

重新加载所有内容
sudo ldconfig

使用此方法将适当地破坏您的相机包,因为从现在起它将与您的新路径中的库链接。

3. 将相机包 (/usr/lib/libQt*) 提供的 Qt 库临时移动到另一个位置,并检查 spinview 是否适用于 5.7 以外的其他 qt 版本。如果是 - 您可以从 /usr/lib/ 中删除 qt5.7 库,因为它们不需要 - 这里不需要复杂的卸载过程。无论如何,您始终可以使用相机.deb 包恢复它。

【讨论】:

  • 您好,非常感谢您详尽的回答,这对我帮助很大,最后,我的 .bashrc 中有一个指向 /usr/lib 的链接,我不知道。删除它有帮助。但是您能否添加一些关于/etc/ld.so.conf.d/ 的信息或信息链接,它是如何工作的,这个目录的目的是什么?
【解决方案2】:

我遇到了类似的问题,最终通过运行“LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu/qtcreator”而不是“qtcreator”来解决。所以首先谢谢你的回答

为了更深入地理解问题,我采取了一些步骤:

  • 通过运行“ldd -v /usr/local/Qt/5.7/gcc_64/lib/libQt5Widgets.so.5”(在“需要”错误消息)
  • 通过运行“sudo find / -name libQt5Widgets.so*”找出系统中安装了哪些版本。原来,我安装了三个版本(5.5.1、5.7.1 和 5.11.1)。目前qtcreator使用的是5.7.1的(比较ldd的结果和find的结果)
  • 通常,建议将 qt5-default 与 qtcreator 一起安装(均使用 sudo apt install)。运行“dpkg -s qt5-default”显示它的版本为 5.5.1。因此,qtcreator 很可能需要 5.5.1 库版本(尽管我原本预计它也可以与更高版本一起使用)。
  • 让 qtcreator 使用 5.5.1 库,方法是通过环境变量 LD_LIBRARY_PATH 指定它们的路径,即运行“LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu/qtcreator”

【讨论】:

    【解决方案3】:

    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 的各种方法。

    【讨论】:

      【解决方案4】:

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

      gedit ~/.bashrc
      
      export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH
      

      保存文件。那么,

      source ~/.bashrc
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-07-07
        • 2013-10-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-09-29
        • 1970-01-01
        相关资源
        最近更新 更多