QT打包(linux下脚本方式,适用于ubantu22.04)
一、复制文件
复制编译好的release中的可执行文件“helloword”到新建文件夹helloword中(文件夹和文件可以不重名)
二、创建打包脚本
在helloword文件夹中创建pack.sh脚本,内容如下:
#!/bin/sh
exe="helloword" #可执行文件名
des="/home/lgd/App/helloword" #第一步创建的文件夹
deplist=$(ldd $exe|awk '{if (match($3,"/")){printf("%s "),$3}}')
cp $deplist $des
三、创建同名脚本文件
创建helloword.sh文件,内容如下:
#!/bin/sh
appname=`basename $0|sed s,\.sh$,,`
dirname=`dirname $0` #注意符号
tmp="${dirname#?}"
if [ "${dirname%$tmp}" != "/"]; then #if后要有空格
dirname=$PWD/$dirname
fi
LD_LIBRARY_PATH=$dirname
export LD_LIBRARY_PATH
$dirname/$appname "$@"
四、最小化lib库
如出现qt.qpa.plugin:could not find the Qt platform plugin “xcb” in “”,的错误
首先在当前的目录下创建platforms文件夹,将QT安装目录下的/opt/Qt5.14.2/5.14.2/gcc_64/plugins/platforms/libqxcb.so复制到新创建的platforms文件夹下,
然后在执行./helloword.sh之前运行exprot QT_DEBUG_PLUGINS=1,之后再运行./helloword.sh,所缺少的库文件将会被打印出来,找到相应的库文件,复制到当前目录,下列是运行helloword.sh时缺少的库文件的名称:
库文件名 |
---|
libQt5XcdQpa.so.5 |
libQt5DBus.so.5 |
缺少的库文件在QT的安装目录下能找到,路径为:/opt/Qt5.14.2/5.14.2/gcc_64/lib,找到表中的库文件之后将其复制到helloword.sh脚本文件所在目录下,之后就能够运行了!
五、打包加拷贝运行
为避在不同系统之间格式转化出现问题,最好将新建文件夹压缩打包后,导入目标主机,导入目标主机后,运行./helloword.sh即可。