在Linux上部署Qt应用程序[重复]

问题描述 投票:1回答:2

这个问题与以下内容完全相同:

我已经创建了一个很好的小科学Qt应用程序,我想分发它。

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

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

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

或者有不同的方法怎么做?我只有学生执照,所以我认为我不允许静态链接库(但我必须再次阅读许可条款以确保)

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

我已经阅读了manual,但说实话,我并不了解那里的所有内容和所有示例代码。

谢谢您的帮助。

c++ linux qt deployment
2个回答
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系统上使用脚本(至少方便)。没有必要去寻找应用程序的依赖项。


0
投票

您需要先安装所有qt库。

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

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

© www.soinside.com 2019 - 2024. All rights reserved.