【Qt】Linux打包Qt Desktop程序

2 篇文章 0 订阅

以下使用的qt版本为5.11.2,

1. 先创建一个文件夹,用于放置需要打包的所有文件,我创建了一个叫control_client的文件夹,

2. 编译Qt工程,生成Release版本的可执行文件,下图表示了生成可执行文件的路径和可执行文件control_client,

3. 拉取可执行文件所需的依赖库:打开上图中的输出路径,新建一个脚本文件copylib.sh,内容如下,并执行脚本:./copylib.sh control_client,

#!/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

(该脚本的含义为:提取control_client的所有依赖库放入到当前目录下的lib文件夹中,实际就是调用ldd命令实现的。)

4. 将生成的可执行文件拷贝到第1步创建的文件夹中,

5. 将第3步生成的lib文件夹中的所有库拷贝到第1步创建的文件夹中,注意:拷贝的库与可执行文件在同级目录下,

6. 查找Qt平台需要的依赖库:进入Qt的安装路径下,找到平台所需依赖库位置,大部分版本的依赖库路径都在platforms文件夹中,下图中为我的安装路径:

7. 将第3步中的脚本文件copylib.sh复制到上图的Qt平台库路径下,执行./copylib.sh libqxcb.so,同样也会在该路径下生成一个lib文件夹,该文件夹中存放的是libqxcb.so库的依赖文件。

8. 将第7步中生成的lib文件夹内的所有库拷贝到第1步创建的文件夹control_client中,注意:拷贝的库与可执行文件在同级目录下,

9. 删除Qt路径中生成的lib文件夹和拷贝进去的copylib.sh脚本,

10. 将Qt平台库的整个platforms文件夹都拷贝到第1步创建的文件夹control_client中去,注意:platforms文件夹与可执行文件在同级目录下,

11. 以上便完成了整个Qt程序的所有依赖库拷贝,目前第1步创建的文件夹中的所有文件即是运行程序需要的所有Qt组件,

12. 在第1步创建的文件夹中新建一个脚本,脚本名与可执行文件名相同,本文叫control_client.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 "$@"

(脚本主要是用来配置可执行程序运行是的依赖库路径的。)

13. 最终第1步创建的文件夹中包含的文件目录如下所示,如需在其他计算机上运行,拷贝整个文件夹即可。

14. 【可选】如果上步骤的文件夹需要进行压缩,可以采用各种方式压缩,但是使用tar命令压缩时,最好加上 -h 参数。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值