Qt程序移植(打包)

一、前言

  我们使用Qt软件构建项目之后得到exe执行文件,但是exe文件正常执行需要依赖Qt的各种动态库,所以如果想要在电脑上直接双击运行exe文件,就需要配置系统的环境变量,将Qt的动态库路径添加到系统的环境变量中,才能保证程序正常运行。
  通常情况下,我们都需要把程序安装到其他的电脑或设备上运行,而我们需要安装应用程序的电脑不一定已经安装Qt软件并且配置好系统环境变量,另外如果我们的程序运行需要依赖安装Qt软件的话肯定是不合理的。所以,为了能够让程序在其他的电脑上正常运行,此时就需要对程序进行打包,然后移植到目标电脑或设备上运行即可。

二、Windows Qt程序移植

1、首先在Qt的安装安装目录下找到项目构建套件的目录(如mingw73_32),进入该目录,创建一个自定义的目录,然后把Qt项目构建生成的exe文件拷贝到新建的目录中。

在这里插入图片描述

2、打开Qt的命令行操作终端,然后进入我们新建的目录,在命令行中输入windeployqt test.exe(程序名字根据实际而定),然后回车执行,等待命令执行完毕。

在这里插入图片描述

3、 打包完成,在刚才新建的目录里面多了很多文件,这些文件都是exe运行必要的库文件,此时我们就可以把当前的整个目录拷贝移植到其他电脑上面运行了。

在这里插入图片描述

注意

  • 上述的操作只能添加Qt自带的dll文件,如果我们的项目中使用了第三方的库文件,就必须要手动把对应dll文件拷贝到这个程序目录中。比如,项目中使用了FFMpeg数据库,那就需要手动添加FFMpeg相关的dll和lib文件。
  • exe程序打包的目录和命令行终端执行打包命令的路径需要根据项目构建的使用的套件而定(如mingw73_32),因为不同的构建套件使用的库文件不一样,所以exe文件必须要放到对应构建套件的目录下打包才可以。

三、Linux Qt程序移植

  Linux下Qt项目构建生成的执行文件同样需要打包所需的库文件才能移植到其他设备上运行,仅限于使用Qt动态构建套件才需要打包库文件进行移植。如果自己通过Qt源码编译设置了静态构建套件的话,则不需要进行库文件打包移植,因为静态构建已经把程序所需的库文件编译到执行文件了,只把执行文件移植到其他设备上就可以正常运行。
  Linux下Qt程序打包的步骤如下:

1、使用Qt编译完之后得到可执行文件如demo
2、新建打包文件夹如demoPack,把demo拷贝到该文件夹下
3、新建一个脚本文件pack.sh,作用是提取lib文件
4、新建一个脚本文件demo.sh
5、在终端输入./pack.sh运行脚本,执行成功之后会得到依赖的lib文件
6、测试是否可以执行,在终端输入./demo.sh运行脚本
7、移植到未安装Qt环境的设备运行,测试是否可用

  脚本文件pack.sh的内容如下:

#!/bin/sh

# program name
exe="demo"
# package directory path, must create it in advance
des="/home/demoPack"

deplist=$(ldd $exe | awk '{if (match($3,"/")){ printf("%s "),$3 } }')
cp $deplist $des

  脚本文件demo.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 "$@"

附:其他相关文章

Windows Qt设置环境变量

  • 5
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

叶落花枯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值