这个问题与以下内容完全相同:
我已经创建了一个很好的小科学Qt应用程序,我想分发它。
在Windows中这很容易做到这一点,我只是创建了一个文件夹,把我的可执行文件放在那里并调用了windeployqt
程序,它将所有必要的.dll
文件放在Qt5Core.dll
,Qt5Gui.dll
,Qt5Charts.dll
等文件夹中......它创建了一些子文件夹,如iconengines/
,imageformats/
,platforms/
等等。这个文件夹现在包含43个文件。当我将此文件夹复制到任何其他装有Windows 10的计算机时,它运行良好。
我想在Linux上做同样的事情,因为它是我们使用的首选操作系统。
但是,我有点挣扎,因为我真的不知道如何开始。是否有可能以同样的方式做到这一点?将所有必需的库与可执行文件一起复制到一个文件夹中,只需将其复制到另一台使用Linux的计算机上并运行它即可? (澄清一下:当我说Linux时我的意思是Ubuntu 18.04或16.04)
或者有不同的方法怎么做?我只有学生执照,所以我认为我不允许静态链接库(但我必须再次阅读许可条款以确保)
如果它的工作原理相同。是否有一种简单的方法可以复制此文件夹中的所有必需库?或者我必须自己搜索42个图书馆?
我已经阅读了manual,但说实话,我并不了解那里的所有内容和所有示例代码。
谢谢您的帮助。
查看文档中的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系统上使用脚本(至少方便)。没有必要去寻找应用程序的依赖项。
您需要先安装所有qt
库。
我认为如果你正在创建一个基于Qt的项目,使用qmake
可能是一个解决方案。 Qt Creator将其用作默认值。
qmake
生成用于编译程序的所有必需文件。尝试使用它。