UOS下打包Qt程序,其实就是在linux下进行打包,网上关于ubuntu下的打包内容比较多,uos属于Debian类的linux系统,和ubuntu一样,所以和ubuntu下的打包方法是一样的。
1.首先编写一个release应用程序
2.创建一个名为copylib.sh的脚本,内容如下
#!/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
该脚本的功能就是使用ldd命令找到所打包应用程序依赖的库,并复制到当前目录下的lib文件夹下
3.执行脚本./copylib.sh WtGMAssist,执行之前保证脚本有执行权限,如果没有就执行sudo chmod +x copylib.sh.
4.新建文件夹assist,把应用程序和lib文件夹下的库到复制到assist中,这个时候直接去运行WtGMAssist是能够运行的,因为这是开发环境,有一些依赖能够直接链接到。实际上把这个文件夹复制到干净的系统是无法运行的,会报错缺少xcb模块。所以我们还要把xcb模块添加进来
5.找到Qt安装路径,如/home/song/Qt5.12.8/5.12.8/gcc_64/plugins/platforms,把copylib.sh复制到platforms文件夹下,执行脚本./copylib.sh libqxcb.so
6.把生成的lib文件夹下的库复制到assist文件夹下,注意如果提示文件已存在的,不要替换,选择跳过
7.在assis下创建platforms文件夹,把libqxcb复制到该文件夹下
8.创建运行脚本,WtGMAssist.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 "$@"
赋予执行权限,复制到assist文件夹下
9.运行WtGMAssist.sh即可运行
10.不同的项目使用的东西不同,上面的操作是运行依赖的库,有些额外的插件连接的库是没有加的,这些库可以到Qt安装目录下查找,如我的位置是/home/song/Qt5.12.8/5.12.8/gcc_64/plugins
如图片依赖的库为/home/song/Qt5.12.8/5.12.8/gcc_64/plugins/imageformats,代码中使用加载ico图片就需要添加libqico.so
键盘输入的依赖为/home/song/Qt5.12.8/5.12.8/gcc_64/plugins/platforminputcontexts/libfcitxplatforminputcontextplugin.so
其他依赖根据需要自己手动添加