在 Linux 上部署 Qt 应用程序



我创建了一个不错的科学Qt应用程序,我想分发它。

在 Windows 中执行此操作非常容易,我只需创建一个文件夹,将我的可执行文件放在那里并调用windeployqt程序,该程序将所有必要的.dll文件放在文件夹中,例如Qt5Core.dllQt5Gui.dllQt5Charts.dll......它创建了一些子文件夹,如iconengines/imageformats/platforms/等等。 此文件夹现在总共包含 43 个文件。 当我将此文件夹复制到装有 Windows 10 的任何其他计算机时,它运行良好。

我想在 Linux 上做同样的事情,因为它是我们使用的首选操作系统。

但是,我有点挣扎,因为我真的不知道如何开始。 是否可以以同样的方式进行?将所有必要的库与可执行文件一起复制到一个文件夹中,然后能够将其复制到带有 Linux 的不同计算机上并运行它? (澄清一下:当我说Linux时,我指的是Ubuntu 18.04或16.04)

还是有没有不同的方法可以做到这一点? 我只有学生许可证,所以我认为我不允许静态链接库(但我必须再次阅读许可条款才能确定)

万一它的工作原理相同。有没有一种简单的方法可以复制此文件夹中所有必需的库?还是我必须自己搜索 42 个图书馆?

我已经阅读了手册,但老实说,我不明白所有内容以及其中的所有示例代码。

谢谢你的帮助。

请查看文档中的"创建应用程序包"链接。对于 Linux,通过文档为您提供启动脚本作为起点。在这里:

#!/bin/sh
appname=`basename $0 | sed s,.sh$,,`
dirname=`dirname $0`
tmp="${dirname#?}"
if [ "${dirname%$tmp}" != "/" ]; then
dirname=$PWD/$dirname
fi
LD_LIBRARY_PATH=$dirname
export LD_LIBRARY_PATH
$dirname/$appname "$@"

此脚本必须另存为.sh脚本,并且必须位于可执行文件的目录中。

使脚本可执行,打开终端并执行以下操作:

$ cd /pathToScript/
$ sudo chmod +x scriptName.sh

然后双击脚本以运行。

如Qt文档中所述,这将使:

。确保动态链接器将找到 Qt 库。请注意,您只需重命名脚本即可将其与其他应用程序一起使用。

如果你想静态部署你的项目,你必须首先有一个从源代码构建的Qt的静态版本,可以在Qt Docs的标题中找到。

还有几点说明:如果你想分发这个项目,让它在 Linux 系统上使用。您可以简单地打包构建文件夹。但是要实际运行它,您需要在Linux系统上使用该脚本(至少对于简单的方法)。没有必要去寻找应用程序的依赖项。

您需要先安装所有qt库。

我认为如果您正在创建一个基于 Qt 的项目,使用qmake可能是一种解决方案。Qt Creator将其用作默认值。

qmake生成用于编译程序的所有所需文件。尝试使用它。

最新更新