在Debian 8.3上找不到Qt平台插件'xcb'

时间:2016-02-14 18:26:29

标签: c++ qt

我在Ubuntu 15.10上编译了一个简单的Qt应用程序 我在可执行文件所在的同一目录中创建了一个lib和一个平台文件夹 我复制了libicudata.so.54,libicui18n.so.54,libicuuc.so.54,libQt5Core.so.5,libQt5DBus.so.5,libQt5Gui.so.5,libQt5Widgets.so.5, libQt5XcbQpa.so.5进入lib,libxcb.so进入平台,
然后将带有文件夹的应用程序移动到新的Debian 8.3安装 我还创建了一个包含以下内容的start.sh脚本:

export LD_LIBRARY_PATH=$PWD/lib
export QT_QPA_PLATFORM_PLUGIN_PATH=$PWD/platforms
./QtTestApp

但是当我使用脚本启动应用程序时,它说它无法找到Qt平台插件'xcb'...... 我在应用程序本身上运行ldd,在libxcb.so上运行,但似乎它找到了所有内容......

3 个答案:

答案 0 :(得分:2)

“platforms”是插件目录的子文件夹。

样本结构

./QtTestApp
./qt.conf
./lib
./lib/libicudata.so.54
./lib/libicui18n.so.54
…
./lib/libQt5Widgets.so.5
./plugins/platforms
./plugins/platforms/libqxcb.so
./plugins/platforms/libqlinuxfb.so
./plugins/platforms/libqoffscreen.so
./plugins/platforms/libqminimal.so

qt.conf

[Paths]
Prefix = .

在这种情况下,您通常不需要设置QT_QPA_PLATFORM_PLUGIN_PATH。

如果将./QtTestApp的RPATH设置为$ORIGIN/lib,也可以避免使用LD_LIBRARY_PATH。

注意:在Ubuntu 15.10上编译的应用程序可能无法在Debian 8上运行。这是因为Ubuntu 15.10使用的是较新版本的libc和libstdc ++,这在Debian 8上不可用。您可以解决该问题当您使用Ubuntu 14.04作为编译机器时。然后你有大约this list of compatible target distributions

答案 1 :(得分:1)

我从警告开始遇到同样的问题:QXcbIntegration:无法创建平台... 这是误导性的,因为它被证明是部署中缺少的插件。这就是我所做的:我复制了" xcbglintegrations"来自"插件内的文件夹" dev系统上的qt安装文件夹(在我的情况下,在#34; Qt / 5.6 / gcc_64 / plugins"下)到已部署的应用程序文件夹中的一个"插件"夹。然后就可以将空的(!)qt.conf文件提供到app文件夹中,该文件用qt.conf-method的默认值覆盖硬编码的库路径(在#34;插件&#的情况下) 34;记录一个亲戚"插件"文件夹,如上所述)。查看here以获取有关qt.conf文件和默认值的更多信息。我发现这一点,因为我在qt.conf文件中指定路径时首先要正确识别。 qt.conf文件的正确完整方式(建议使用而不是空的原因文件)是:

[Paths]
Prefix = .
Plugins = plugins

答案 2 :(得分:0)

在某些时候,Debian将Qt XCB插件与Qt GUI库分开打包,看起来你有这个版本。两个选项:

  • 安装libqt5xcbqpa5
  • 升级libqt5gui5