在Linux上部署Qt应用程序

时间:2018-09-16 21:15:27

标签: c++ linux qt deployment

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

在Windows中执行此操作非常容易,我只创建了一个文件夹,将可执行文件放置在其中,然后调用了windeployqt程序,该程序将所有必要的.dll文件都放在了{{1 }},Qt5Core.dllQt5Gui.dll ...,它创建了一些子文件夹,例如Qt5Charts.dlliconengines/imageformats/等。 现在,此文件夹总共包含43个文件。 当我将此文件夹复制到其他装有Windows 10的计算机时,它运行良好。

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

但是,我有点挣扎,因为我真的不知道如何开始。 可以用相同的方式做吗?将所有必需的库与可执行文件一起复制到一个文件夹中,并且能够简单地将其复制到装有Linux的另一台计算机上并运行它吗? (要澄清:当我说Linux时,我的意思是Ubuntu 18.04或16.04)

还是有另一种方法? 我只有学生许可证,所以我认为我不能静态链接库(但必须再次阅读许可证条款以确保)

以防万一。有没有简单的方法可以在此文件夹中复制所有必需的库?还是我必须自己搜索42个库?

我已经阅读了manual,但老实说,我不了解其中的所有内容和示例代码。

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

查看文档中的Creating the Application Package链接。对于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版本,可以在此headline from the Qt Docs上找到它。

更多注意事项:如果要分发此项目以便在Linux系统上使用。您可以简单地打包构建文件夹。但是要真正运行它,您将需要在Linux系统上使用脚本(至少以简单的方式)。 没有必要去寻找应用程序的依赖项。

答案 1 :(得分:0)

您需要先安装所有_库。

如果您要创建基于Qt的项目,我认为使用qt是一种解决方案。 Qt Creator将其用作默认设置。

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