Centos8下qt通过脚本的方式打包可执行程序到其他电脑

参考:

Linux(Centos)下qt的打包之通过脚本的方式打包_思宇大牙牙的博客-CSDN博客_linux qt打包

QtCreator 的版本为5.14.2,另一台电脑不需要另装qt环境。

1.利用QtCreator生成release版本,将对应生成的文件夹下的可执行文件拷贝到打包文件夹。**注意打包文件夹的名字不能有中文和空格。

    这里的orangDemo2是可执行文件,但是这个文件是不能在别的电脑上运行的,因此需要把它依赖的库进行打包,我的打包文件夹的路径是/demo,把这个可执行文件拷贝到该文件夹下。

2.创建两个脚本文件,如上图所示(在路径中)

touch pack.sh

touch orangeDemo2.sh

双击先编辑pack.sh脚本,在其中输入:

#!/bin/sh  
exe="orangeDemo2" #需要发布的程序名称
pwd="/demo"       #创建文件夹的位置
files=$(ldd $exe | awk  '{if (match($3,"/")){ printf("%s "),$3 } }')  
cp $files $pwd

该脚本主要导入可执行程序的依赖库等。

双击编辑orangeDemo2.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 "$@"

此处不需要修改,复制即用,主要作为启动脚本。

3.此时将所有打包到其他linux电脑还有一个问题,直接运行两个脚本会提示could not find the QT platform plugin “xcb“ in “。说明打包还缺东西。

添加两个重要的动态库依赖环境

  • libQt5XcbQpa.so.5
  • libQt5DBus.so.5

然后将两个库复制到打包文件夹demo中

找到这两个库,我的位置是/opt/Qt5.14.2/5.14.2/gcc_64/lib,输入:

cp /opt/Qt5.14.2/5.14.2/gcc_64/lib/libQt5XcbQpa.so.5.14.2  /demo

cp /opt/Qt5.14.2/5.14.2/gcc_64/lib/libQt5DBus.so.5.14.2  /demo

自己找自己的路径哦。

4.回到自己的打包路径下/demo。

添加脚本操作权限(好像也可以不添加)

chmod +x pack.sh
chmod +x orangDemo2.sh

依次运行脚本,这里就启动了

./pack.sh
./orangeDemo.sh

全部添加后是上图这样的。 其中对两个后添加的依赖库进行了改名,方便查找。

mv libQt5XcbQpa.so.5.14.2 libQt5XcbQpa.so.5就可以。

5.其他依赖库

这次打包后还是有问题,需要再打包qt插件库,默认安装在这个路径中/opt/Qt5.14.2/Tools/QtCreator/lib/Qt/plugins中的platforms和imageformats,将这两个文件夹再复制过来,最后是这样的。

 icons是我的图标文件。这样就可以把这个文件夹复制到别的Linux系统上试试吧。启动时要利用脚本启动./orangeDemo.sh。

这里的SVG图标移动过去是不能显示的,不知道什么原因(换成png后可以正常显示),哪位遇到过可以指导一下!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值