如何使用appimage部署qt5应用
How to use appimage to deploy qt5 application
我正在使用 appimage http://appimage.org 将我的应用程序打包到一个独立的可执行文件中。
我在 debian 测试 lenny 上这样做。
我的应用程序使用了很多开源库(qt,python pythonqt fftw hdf4/5 gsl netpbm qwt)并且使用 Qt4[= 一切正常36=]。我可以在 debian 上编译我的应用程序并创建一个 运行 在 mint(使用 xfce)上顺利运行的 appdir 映像。
当我切换到 Qt5 时,它停止工作了。
现在 appimage 运行s 在 debian 上,但不是在 mint 上,我得到这个错误:
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
请注意消息是不一致的:首先它说我缺少 xcb
然后它变得可用。
我确实在我的应用 usr/lib
树中复制了插件目录。
我在主机 apt-get install libx11-xcb1
上安装了 xcb
我的 AppRun 文件如下所示:
#!/bin/bash
HERE="$(dirname "$(readlink -f "[=11=]")")"
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" "$@"
cd -
我错过了什么?
Krita、Scribus 和 Subsurface 等许多 Qt5 应用程序都作为 AppImages 分发,因此这绝对是可能的。
可能您缺少一些需要捆绑在 AppImage 中的组件。特别是,Qt 插件需要捆绑在 AppImage 中才能运行。
有关将 Qt5.5 应用打包为 AppImage 的示例,请参阅 here。
请注意,一般建议使用旧的基础系统(如 CentOS 6)进行编译,因为生成的 AppImages 将兼容更多的发行版,而不仅仅是最新的。
如果你 post 一个 link 到你的项目或在 https://github.com/probonopd/AppImages/issues 上打开一个问题,我可能会给你更详细的指导。
我正在使用 appimage http://appimage.org 将我的应用程序打包到一个独立的可执行文件中。
我在 debian 测试 lenny 上这样做。
我的应用程序使用了很多开源库(qt,python pythonqt fftw hdf4/5 gsl netpbm qwt)并且使用 Qt4[= 一切正常36=]。我可以在 debian 上编译我的应用程序并创建一个 运行 在 mint(使用 xfce)上顺利运行的 appdir 映像。
当我切换到 Qt5 时,它停止工作了。
现在 appimage 运行s 在 debian 上,但不是在 mint 上,我得到这个错误:
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
请注意消息是不一致的:首先它说我缺少 xcb
然后它变得可用。
我确实在我的应用 usr/lib
树中复制了插件目录。
我在主机 apt-get install libx11-xcb1
我的 AppRun 文件如下所示:
#!/bin/bash
HERE="$(dirname "$(readlink -f "[=11=]")")"
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" "$@"
cd -
我错过了什么?
Krita、Scribus 和 Subsurface 等许多 Qt5 应用程序都作为 AppImages 分发,因此这绝对是可能的。
可能您缺少一些需要捆绑在 AppImage 中的组件。特别是,Qt 插件需要捆绑在 AppImage 中才能运行。
有关将 Qt5.5 应用打包为 AppImage 的示例,请参阅 here。
请注意,一般建议使用旧的基础系统(如 CentOS 6)进行编译,因为生成的 AppImages 将兼容更多的发行版,而不仅仅是最新的。
如果你 post 一个 link 到你的项目或在 https://github.com/probonopd/AppImages/issues 上打开一个问题,我可能会给你更详细的指导。