linux环境下通过脚本打包QT程序

Linux 打包QT写的程序:
总过程可以分为三步:
1.准备两个脚本:
ldd.sh脚本
app.sh脚本
给两个脚本分别加权限

2.打包
添加程序依赖库
添加Qt相关依赖库

3.验证
运行脚本验证

一、两个脚本:

A:ldd.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

B:app.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 "$@"

C:给脚本赋权限:

sudo chmod 777 ldd.sh
sudo chmod 777 app.sh

二、打包过程

A:添加程序依赖库:
将ldd.sh脚本与release模式下生成的可执行程序app放置在同一目录下
执行“./ldd.sh app”会在当前目录下生成lib文件夹。lib文件夹下存放着app运行所依赖的库文件
将lib文件夹中的所有文件复制到app所在目录下,并且可以删除lib文件夹与ldd.sh脚本了

B:添加Qt相关依赖库
将ldd.sh脚本复制到Qt5安装目录的platforms文件夹中;文件夹位置可参考:Qt5.5.1/5.5/gcc/plugins/platforms
执行“./ldd.sh libqxcb.so”将生成的lib文件夹中的所有文件拷贝到app所在的当前目录下,有些库可能会有重复,点击替换即可
将platforms整个文件夹拷贝到app所在目录中

C:如果所编写的程序有操作数据库的动作,还需要将platforms同级目录中的sqldrivers文件夹也拷贝到app所在的文件夹下

D:最后将app.sh 复制在app所在文件夹下

三、验证
在其他同版本机器上执行 ./app.sh ,程序正常运行

  • 9
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值