在Linux中正确部署Qt应用程序

我已经使用Qt编写了一个应用程序,并且正在尝试对其进行部署。我构建了它的应用程序并尝试分发它,但是最终我不得不静态地构建Qt,这样用户就不必运行Qt的库就可以运行我的应用程序。唯一的问题是字体损坏,并且图像无法加载。

为了静态地构建Qt,我这样做:

./configure -static -release -ltcg -optimize-size -no-pch -prefix "/home/myuser/Qt/5.11.1-static" -skip webengine -nomake tools -nomake tests -nomake examples -fontconfig
make -j4
make -j4 install

然后出现了字体无法正常工作的问题。我不断收到错误“ QFontDatabase:找不到字体目录(Qt安装目录)/ libs / fonts”,因此我将系统上的dejavu fonts文件夹复制到程序目录中的一个名为“ fonts”的文件夹,并创建了一个Bash脚本将QT_QPA_FONTDIR设置为新的字体目录。这使错误消失,并使我的应用程序上的文本可见,但是当输入密码时,将显示空白字符而不是星号或任何其他字符。此外,图像不显示。我在与应用程序位于同一目录的目录中有一个文件夹,其中包含我的图像,因此我这样做:

QIcon home("(program directory)/images/home.svg");
QIcon vpn("./images/vpn.svg");
ui->tabWidget->setTabIcon(0, home);
ui->tabWidget->setTabIcon(1, vpn);

图像不会显示,但是如果程序是使用动态Qt构建的,则图像会显示。我尝试使用完整路径并使用./来引用当前目录,但是没有一个导致图像出现。

杰里米·弗里斯纳

FWIW,我公司打包其Qt应用程序的Linux构建的方式是使用动态库,如随附的屏幕快照所示。请注意,实际的可执行文件(在屏幕快照中显示为“ MyApp”,为了保护无辜者,我已作了一些尝试)位于“ bin”子目录中,以及所有必要的共享库文件。在主目录中是一个简短的shell脚本(“ MyApp.sh”),如下所示:

#!/bin/bash
unset QT_PLUGIN_PATH   
appname=$(basename "$0" .sh)
dirname=$(dirname "$0")
cd "$dirname/bin"
export LD_LIBRARY_PATH=`pwd`
./$appname "$@"

...希望用户运行MyApp.sh脚本,该脚本将适当地设置LD_LIBRARY_PATH变量,然后运行可执行文件。

这不是世界上最优雅的事情,但是它可以完成工作(很像Linux本身,呵呵)。

Linux分发文件树的屏幕快照

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章