2016-04-15 88 views
0

我正在使用appimage http://appimage.org将我的应用程序打包为独立的可执行文件。如何使用appimage部署qt5应用程序

我在debian testing lenny上做了这个工作。

我的应用程序使用了很多开源库(qt,python pythonqt fftw hdf4/5 gsl netpbm qwt),并且一切正常,使用Qt4。我可以在debian上编译我的应用程序,并创建一个在mint(使用xfce)上平滑运行的appdir图像。

当我切换到Qt5时停止工作。

现在appimage Debian上运行,而不是在薄荷,我得到这个错误:

This application failed to start because it could not find or load the Qt platform plugin "xcb". 

Available platform plugins are: eglfs, kms, linuxfb, minimal, minimalegl, offscreen, xcb. 

Reinstalling the application may fix this problem. 
Aborted 

注意,messege非一致:firts它说我缺乏xcb和比它MAKS可用。

我没有在我的应用程序usr/lib树中复制plugins目录。 我已经XCB安装在主机apt-get install libx11-xcb1

我AppRun文件看起来像这样:

#!/bin/bash 
HERE="$(dirname "$(readlink -f "${0}")")" 
cd "${HERE}/usr/" 
export LD_LIBRARY_PATH="${HERE}/usr/lib/:${LD_LIBRARY_PATH}" 
export PATH="${HERE}/usr/bin:${PATH}" 
export QT_PLUGIN_PATH="${HERE}/usr/lib" 
exec "${HERE}/usr/bin/Neutrino" "[email protected]" 
cd - 

我缺少什么?

回答

2

许多Qt5应用程序(如Krita,Scribus和Subsurface)正在作为AppImages发布,所以它绝对有可能。

可能您错过了一些需要捆绑在AppImage中的组件。尤其是,Qt插件需要捆绑在AppImage中才能使用。

查看here了解如何将Qt5.5应用打包为AppImage。

请注意,通常建议使用旧的基础系统(如CentOS 6)进行编译,因为生成的AppImage将与更多的发行版兼容,而不仅仅是最新的发行版。

如果您发布一个链接到您的项目或在https://github.com/probonopd/AppImages/issues上打开问题,我可能会给你更详细的说明。

+0

谢谢!我在scribus appimage脚本中看到了这一行:'ldd usr/lib/qt5/plugins/platforms/libqxcb.so | grep“=>”| awk'{print $ 3}'| xargs -I'{}'cp -v'{}'。/ usr/lib'这可能会有帮助,明天我会试试 – bibi

+0

对不起@probono,但它不起作用......当然,我安装了插件目录在appdir'/ usr/lib/plugin'中,我也复制了每个插件所需的所有库...没有成功。 – bibi

+0

代码在这里:https://github.com/aflux/neutrino但由于在测试Debian(qwt for qt5)缺少一些库而没有完全编译库(pythonqt与qt_all支持),这是一个混乱的构建(这是为什么我想要像appimage这样的东西) – bibi