https://blog.csdn.net/JOBbaba/article/details/124289626
目录
打包基本流程(exe为例)
生成 release 版本的可执行文件 .exe;
找到所有的动态链接库 dll;
将所有的 dll 以及依赖的各种文件和可执行文件打包在一起生成最终的一个可执行文件
这样即可在为未安装Qt的机器上使用。
具体步骤
找到可执行程序的输出目录,找到可执行文件,假如文件名为:qmlvideo。
新建一个空文件夹,用来放打包后的程序文件。假如新文件夹为NewPro,将可执行文件qmlvideo复制到NewPro。
1.找依赖库
1-1)
输入ldd qmlvideo
,查找依赖库。
Release文件夹中新建copylib.sh,设置权限chmod 777 copylib.sh,运行./copylib.sh qmlvideo, 在Release中生成了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
#$
将lib中所有文件复制到新文件夹NewPro中,此时,NewPro文件夹的内容为可执行文件qmlvideo 和lib中的所有动态库。
1-2)
补充动态库,因为后续可能会发生“xcb"错误;进入Qt安装目录文件夹,依次进入“版本号”->“gcc_64”->"plugins"中(我这里是Qt5.14.1/5.14.1/gcc_64/plugins/),复制platforms文件夹到NewPro文件夹下
将copylib.sh复制到NewPro/platforms文件夹中,运行:./copylib libqxcb.so命令,同样生成lib文件夹(这里是libqxcb的依赖库,若缺少,将触发“xcb”错误),将lib文件夹下所有文件拷到NewPro目录下,遇到文件冲突选择全部替换。
1-3)
export QT_DEBUG_PLUGINS=1
运行应用程序的脚本qmlvideo.sh
如有not found的依赖库,再去Qt安装路径下的platforms中找到复制过来。
2.制作可执行程序运行脚本
在NewPro目录下,创建脚本文件xxx.sh(xxx为可执行程序名,我这里是qmlvideo.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.运行程序
将NewPro文件夹拷贝到一台同系统没有Qt环境的电脑上,进入NewPro目录后,运行:./qmlvideo.sh命令即可启动程序。
0 条评论