Linux下QT程序打包
网上有关QT程序打包的教程大多都是Windows下的教程,有关Linux下QT程序打包的教程很少,而且大多说的不是很详细,在这里我整理了以下有关Linux下QT程序打包的方法,仅供大家参考学习,有关Windows下QT程序打包的方法可以看我另一篇博客“QT项目超详细打包教程。
目前我接触到的Linux下的QT程序打包方法主要有两种:第一种:通过脚本进行打包,这种方法简单方便,但是通过这种方式打包的QT程序,并不能放到另一台干净的Linux系统下运行,所以不太推荐;第二种:通过Linuxdeployqt进行打包,通过这种方法打包QT程序也很方便,而且打包的程序可以放到任何Linux环境下直接运行。下面我将详细介绍以下两种打包方式,大家可以根据自己的实际使用情况任意选择打包方式。
前提准备
1. 不管通过那种打包方式进行QT程序打包,都要先通过release编译执行生成目标可执行文件。
2.新建test文件夹(可以是任意文件夹)。
3.找到release生成的可执行文件,并将其复制一份到我们新建的test文件夹。生成的可执行文件一般就存在于我们项目目录中的release文件夹下面的bin目录下。 下面是我的路径以及可执行文件。
一、通过脚本打包
1.在我们新建的test文件夹下新建pach.sh脚本。
脚本内容如下:其中exe后边的内容就收我们的可执行文件名称,des后边的内容就是我们test文件夹所在的路径,其他内容都不需要改变。
#!/bin/sh
exe="FiberConfigTool"
des="/临时文件/test/"
deplist=$(ldd $exe|awk '{if (match($3,"/")){printf("%s "),$3}}')
cp $deplist $des
2.赋予脚本权限
3.执行pach.sh脚本,通过执行脚本可以将可执行程序依赖的库都方到test文件夹下。
4.新建FiberConfigTool.sh脚本,并赋予权限(可以是任何名称,建议命名为可执行文件的名称)。
脚本内容如下:只需要修改appname后面的内容为我们的可执行文件名称即可,其他的不需要改变。
#!/bin/sh
appname=FiberConfigTool #要运行的程序名
dirname=`dirname $0`
tmp="${dirname#?}"
if [ "${dirname%$tmp}" != "/" ]; then
dirname=$PWD/$dirname
fi
LD_LIBRARY_PATH=$dirname
export LD_LIBRARY_PATH
$dirname/$appname "$@"
5.运行FiberConfigTool.sh脚本运行程序即可,到此通过脚本打包完毕。
二、通过linuxdeployqt进行打包
1.下载linuxdeployqt:https://github.com/probonopd/linuxdeployqt/releases
2.将下载下来的linuxdeployqt-x86_64.AppImage重命名为linuxdeployqt,之前的名字太长,看着别扭。
3. 赋予linuxdeployqt权限
4.将修改好的linuxdeployqt放到/usr/local/bin目录下,这样我们在任何地方都能够运行 linuxdeployqt。
5.测试linuxdeployqt是否安装成功,出现以下内容表示安装成功。
6.修改文件bashrc文件
在bashrc文件最后追加以下内容:其中/opt/qtcreator-4.14.0/bin是QT的安装路径修改成自己的即可。
#add qt env
export PATH=/opt/qtcreator-4.14.0/bin/:$PATH
export LIB_PATH=/opt/qtcreator-4.14.0/bin/lib:$LIB_PATH
export PLUGIN_PATH=/opt/qtcreator-4.14.0/bin/plugins:$PLUGIN_PATH
export QML2_PATH=/opt/qtcreator-4.14.0/bin/qml:$QML2_PATH
不知道自己QT安装路径的可以通过下面方法获取:whereis qt
7.使用source命令让bashrc文件立即生效
8.测试环境变量,查看是否正确,看到qmake版本表示正确。
9.拷贝依赖文件,如有报错直接忽略等待命令执行完毕即可。
10. 切换到新建的test文件夹下,执行可执行文件,查看是否打包成功,到此通过linuxdeployqt打包完毕。
本文转载自: https://blog.csdn.net/qq_47023150/article/details/131105980
版权归原作者 xiq1212 所有, 如有侵权,请联系我们删除。
版权归原作者 xiq1212 所有, 如有侵权,请联系我们删除。