文章目录
概要
qt不同运行环境下打包方式:windows/linux
1、windows环境下打包qt程序
参考此博主的文档:https://blog.csdn.net/qq_28446813/article/details/124134121
2、linux环境下打包qt程序
2.1、程序目录
(1)、打包流程
- 创建一个空文件夹
- 准备运行脚本
- 生成qt依赖库
- 添加qt依赖库
(2)、打包后的程序目录
2.2、创建一个空文件夹
创建一个空文件夹,用于存储预打包文件,此处创建了一个名为“testTool”的文件夹
2.3、添加依赖脚本
准备两个脚本,分别为“ldd.sh”和“test02.sh”(test02为项目名)
(1)、ldd.sh
一个用来提取目标可执行文件依赖的所有动态链接库,并将这些库复制到一个名为lib的目录中;
#!/bin/bash
LibDir=$PWD"/lib"
Target=$1
lib_array=($(ldd $Target | grep -o "/.*" | grep -o "/.*/[^[:space:]]*"))
$(mkdir $LibDir)
for Variable in ${lib_array[@]}
do
cp "$Variable" $LibDir
done
(2)、test02.sh(test02为项目名称)
设置动态链接库的搜索路径(LD_LIBRARY_PATH),使其指向脚本所在的目录,然后执行与脚本同名(去掉 .sh 后缀)的可执行文件,并将传递给脚本的所有参数原样传递给该可执行文件
脚本名称必须和项目名称一致;
#!/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 "$@"
(3)、添加权限
sudo chmod 777 ldd.sh
sudo chmod 777 test02.sh
2.4、打包过程
打包过程分为:添加程序依赖库和QT依赖的库
2.4.1、添加程序依赖库
(1)、新建一个空文件夹,目录与项目所处位置并列,用于存放程序以及动态库,例如“testTool”文件夹
mkdir /home/luck/project/test/testTool
(2)、将ldd.sh 脚本复制到编译目录,如“build-test02-Desktop.Qt 5 14 2GCc 64bit-Release”;
(3)、执行以下命令,会在当前目录生成lib文件夹,其中存放着运行test02所依赖的库文件。
./ldd.sh test02 //test02是项目名称
(4)、将lib文件夹中的所有文件复制到第1步新建的文件夹“testTool文件夹”中。至此,就可以删除生成的lib文件夹和ldd.sh脚本了
2.4.2、添加Qt相关依赖库
(1)、将ldd.sh脚本复制到Qt的安装目录文件“/home/luck/software/Qt/qt5142/5.14.2/gcc_64/plugins/platforms”文件夹中;
(2)、执行“./ldd.sh libqxcb.so*”,将生成的lib文件夹中的所有文件拷贝到“testTool”文件夹中,可能有重复的,直接替换即可。(拷贝完后,QT安装目录下刚才生成lib文件可以删除)
(3)、返回上级,将qt安装目录下的“…/5.14.2/gcc_64/plugins”中的“platforms和sqldrivers”两个文件拷贝到程序打包文件夹“testTool"中。
(4)、ldd.sh生成完库文件后可删除,将testTool整个文件夹打包压缩即可,在其他电脑linux环境下压缩后直接运行可执行文件即可。