linux下打包qt程序

项目场景:

Qt 提供了一个打包工具,叫做 deployqt,可以将应用程序所依赖的库文件都提取出来,并且支持跨平台。在 Windows 系统叫 windeployqt,在 Linux 系统叫 linuxdeployqt,在 Mac 下叫 macdeployqt。但是公司的破网下载个linuxdeployqt一直下载不下来,就找了另一种方法,记录下来,方便好用

解决方法

1.在Qt Creator中将需要打包的项目配置为Release模式,然后构建项目,在Release目录下生成可执行文件(例:DbDetect);

2.新建一个文件夹作为输出目录(例:output(绝对路径为 /home/output)),将Release目录下的可执行文件DbDetect拷贝到输出目录output,并执行

chmod +x DbDetect

3.打开终端,cd到输出目录output中(绝对路径为 /home/output),然后执行 ldd DbDetect 可以查看DbDetect依赖的所有库,然后将所有依赖的库拷贝至output文件夹下。这个操作比较繁琐,所以我们直接用脚本一次性拷贝,在output文件夹下新建cplib.sh,将以下内容粘贴至cplib.sh中:

#!/bin/sh  
exe="DbDetect"         #修改发布程序的名称
des="/home/output/" #修改输出可执行文件路径
deplist=$(ldd $exe | awk  '{if (match($3,"/")){ printf("%s "),$3 } }')  
cp $deplist $des 

4.在终端执行chmod +x cplib.sh,然后执行 ./cplib.sh,此时所有依赖的库均被拷贝至output文件夹下。

5.在output文件夹下新建DbDetect.sh文件,注意这里文件名一定是(可执行文件名 + .sh),将以下内容拷贝至DbDetect.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 "$@" 

6.执行chmod +x DbDetect.sh,软件至此打包完成。注意:运行软件的时候,执行的是 ./ DbDetect.sh, 而不是直接运行DbDetect

7.将输出文件夹拷贝至目标平台上会丢失执行权限,可以执行chmod +x DbDetectchmod +x DbDetect.sh,然后执行./DbDetect.sh即可运行软件。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值