我创建了一个不错的科学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 个图书馆?
我已经阅读了手册,但老实说,我不明白所有内容以及其中的所有示例代码。
谢谢你的帮助。
请查看文档中的"创建应用程序包"链接。对于 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
生成用于编译程序的所有所需文件。尝试使用它。