Answers:
对于以后遇到的任何读者-在开始(危险地)弄乱共享库的符号链接之前,我强烈建议您先运行
export QT_DEBUG_PLUGINS=1
然后在终端中再次运行失败的可执行文件。请阅读QT抛出的实际错误消息,因为在我的情况下,上述解决方案均未解决此错误的原因。
我打开后的输出QT_DEBUG_PLUGINS
是:
QFactoryLoader::QFactoryLoader() checking directory path "/opt/PostgreSQL/9.6/pgAdmin 4/bin/platforms" ...
loaded library "/opt/PostgreSQL/9.6/pgAdmin 4/plugins/platforms/libqxcb.so"
QLibraryPrivate::loadPlugin failed on "/opt/PostgreSQL/9.6/pgAdmin 4/plugins/platforms/libqxcb.so" : "Cannot load library /opt/PostgreSQL/9.6/pgAdmin 4/plugins/platforms/libqxcb.so: (/opt/PostgreSQL/9.6/lib/libz.so.1: version `ZLIB_1.2.9' not found (required by /usr/lib/x86_64-linux-gnu/libpng16.so.16))"
This application failed to start because it could not find or load the Qt platform plugin "xcb".
Available platform plugins are: xcb.
Reinstalling the application may fix this problem.
Aborted (core dumped)
因此,我搜索了version `ZLIB_1.2.9' not found (required by /usr/lib/x86_64-linux-gnu/libpng16.so.16))
错误并找到了解决方法,从而解决了问题。
在应用程序可执行文件上运行ldd,以查看其如何解决库依赖关系。
这也是必须阅读的内容,以了解在gui应用程序的简单情况下需要哪些基本库:
在我的Ubuntu类型中:
sudo ln -sf /usr/lib/x86_64-linux-gnu/qt5/plugins/platforms/ /usr/bin/platforms
能行得通
对于那些在尝试了Internet上其他所有选项后仍然遇到问题的人,您可以查找从中搜索此臭名昭著的 确切路径libqxcb.so
,以通过Qt
App(在我的情况下VirtualBox-5.2.8
为Qt
app)打开/加载该应用(strace工具。就我而言,由于我是VirtualBox-5.2.8
从源代码进行构建的,因此它是在libqxcb.so
以下位置进行搜索:
"...VirtualBox-5.2.8/out/linux.amd64/release/bin/platforms/"
而不是在default
库路径,Qt
安装路径等位置进行搜索。因此,所有ldd
检查和其他解决方案均无效。而且设置QT_DEBUG_PLUGINS=1
也没有产生任何额外的日志。
在我在Ubuntu 17.10 x86_64上使用Clang / LLVM构建的VirtualBox二进制文件上运行strace:
...VirtualBox-5.2.8$ strace ./out/linux.amd64/release/bin/VirtualBox
.
.
.
access(".../VirtualBox-5.2.8/out/linux.amd64/release/bin/platforms/.", F_OK) = -1 ENOENT (No such file or directory)
write(2, "Qt FATAL: ", 10Qt FATAL: ) = 10
write(2, "This application failed to start"..., 154This application failed to start because it could not find or load the Qt platform plugin "xcb"
in "".
Reinstalling the application may fix this problem.) = 154
.
.
.
这是我的hitting-the-nail-on-its-head
时刻,我创建了symlink
从安装Qt5.10.1
的platforms
下文提到的目录:
"...Qt5.10.1/Tools/QtCreator/lib/Qt/plugins/platforms/"
到搜索路径是"...VirtualBox-5.2.8/out/linux.amd64/release/bin/"
。因此,使用VirtualBox-5.2.8
Linux(Ubuntu 17.10 x86_64
)从源代码构建Clang/LLVM
,终于成功启动了!
实际上,这里另一个有趣的事情是,经过大量的努力,我已经VirtualBox-5.2.8
完全使用了Clang/Clang++/LLVM
on Ubuntu 17.10 x86_64
-因为FreeBSD
,已经有一个VirtualBox
使用clang
Linux 进行构建的端口,但是对于Linux,它在很大程度上依赖于GCC
我所看到的,因此花了很多精力来获得至此,能够成功VirtualBox-5.2.8
使用Clang/Clang++/LLVM
on Ubuntu 17.10 x86_64
for target Linux/AMD64
(Ubuntu 17.10 x86_64
)从其源进行构建,并在解决此臭名昭著的其他问题之后成功启动它libqxcb.so
。
干杯。
当我在Ubuntu 18.04上运行模拟器时,这就是解决几个问题的方法。
$ vim〜/ .bashrc
在文件末尾添加以下行。我在安装我的Android SDK/opt/Android/Sdk
export ANDROID_HOME=/opt/Android/Sdk
export ANDROID_SDK_ROOT=/opt/Android/Sdk
export ANDROID_AVD_HOME=/home/<your name>/.android/avd
export LD_LIBRARY_PATH="/opt/Android/Sdk/emulator/lib64:$LD_LIBRARY_PATH"
export QT_QPA_PLATFORM_PLUGIN_PATH=/usr/lib/x86_64-linux-gnu/qt5/plugins
在您的项目中创建文件qt.conf并添加:
[Paths]
Plugins = /path/to/our/qt instalation/plugins