如何使用appimage部署qt5应用
Posted
技术标签:
【中文标题】如何使用appimage部署qt5应用【英文标题】:How to use appimage to deploy qt5 application 【发布时间】:2016-04-15 07:27:27 【问题描述】:我正在使用 appimage http://appimage.org 将我的应用程序打包成一个独立的可执行文件。
我在 debian 测试 lenny 上做这个。
我的应用程序使用了很多开源库(qt、python pythonqt fftw hdf4/5 gsl netpbm qwt),使用 Qt4 一切正常。我可以在 debian 上编译我的应用程序并创建一个在 mint(使用 xfce)上流畅运行的 appdir 映像。
当我切换到 Qt5 时,这停止了工作。
现在 appimage 在 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 "$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" "$@"
cd -
我错过了什么?
【问题讨论】:
【参考方案1】:许多 Qt5 应用程序(例如 Krita、Scribus 和 Subsurface)都作为 AppImage 分发,所以这绝对是可能的。
您可能缺少一些需要捆绑在 AppImage 中的组件。特别是,Qt 插件需要捆绑在 AppImage 中才能正常工作。
请参阅here,了解将 Qt5.5 应用程序打包为 AppImage 的示例。
请注意,通常建议使用旧的基础系统(例如 CentOS 6)进行编译,因为生成的 AppImage 将兼容更多的发行版,而不仅仅是最新的发行版。
如果您发布项目链接或在https://github.com/probonopd/AppImages/issues 上打开问题,我可能会为您提供更详细的指导。
【讨论】:
谢谢!我在 scribus appimage 脚本中看到了这一行:ldd usr/lib/qt5/plugins/platforms/libqxcb.so | grep "=>" | awk 'print $3' | xargs -I '' cp -v '' ./usr/lib
这可能会有所帮助,我明天试试
对不起@probono,但它不起作用......当然我在appdir /usr/lib/plugin
中安装了插件目录,我还复制了每个插件所需的所有库......没有成功。
代码在这里:github.com/aflux/neutrino 但由于测试 Debian 中缺少一些库(qwt 用于 qt5)并且没有完全编译的库(pythonqt 支持 qt_all),构建起来很混乱(这就是为什么我想要 appimage 之类的东西)
请确保您使用的是来自launchpad.net/~beineri/+archive/ubuntu/opt-qt592-trusty 的 Qt 5.9.2(目前可用于 Ubuntu 的最新版本) - 这是我们正在测试的组合。看看它是否可以使用它,然后在需要时尝试使用其他 Qt 版本。
答案中示例的链接已损坏。以上是关于如何使用appimage部署qt5应用的主要内容,如果未能解决你的问题,请参考以下文章
如何从 Electron AppImage .mount 点访问 Sqlite3 数据库?
如何在 windows xp 上部署 Qt 5.10 Quick 2 应用程序?
如何在Windows XP上部署Qt 5.10 Quick 2应用程序?