虚拟机安装Linux系统(版本:Centos7),QtCreator 的版本为5.12.2。

打包方式有两种一种是用脚本进行打包,另一种是用Linuxdeployqt,网上的资料说第二种是在Linux(Ubuntu)进行打包的,尝试无果卡在了配置Qt环境变量上。第一种方法比较简单,现总结如下:

1.利用QtCreator生成release版本,将对应生成的文件夹下的可执行文件拷贝到打包文件夹。这里要注意打包文件夹的名字不能有中文和空格,不然后面总提示说不是路径。

centos打包arm的镜像 centos打包文件_qt

将这里的ToolBox(属性是可执行文件),双击是可以运行的,但是这个文件是不能在别的电脑上运行的,因此需要把它依赖的库进行打包,我的打包文件夹的路径是/mnt/win/Centos764share/pic,把这个可执行文件拷贝到该文件夹下。

2.添加脚本文件pack.sh和ToolBox.sh。因为是新手我写的就细致一点吧,如何写脚本文件

光标停在/mnt/win/Centos764share/pic这个文件夹里,然后右键点出终端,然后输入

touch pack.sh

touch ToolBox.sh

centos打包arm的镜像 centos打包文件_centos打包arm的镜像_02

用ls -l 查看文件是否存在以及脚本的权限。

双击pack.sh 可直接输入(网上也有用指令写脚本的我还没有学会)

输入:

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


注意修改路径

同理双击ToolBox.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.添加可执行权限,运行脚本。

终端进入pic后利用chmod增加可执行权限

centos打包arm的镜像 centos打包文件_4s_03

倒数第二行忽略

考虑到别的电脑不一定有Qt因此这里还要 添加两个重要的动态库依赖环境

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

先查找是否存在,在Qt的安装目录下,/opt/Qt5.12.2/5.12.2/gcc_64/lib 打开终端

输入

ls -all libQt5XcbQpa.so.5
ls -all libQt5DBus.so.5

以查看版本

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

输入:

cp libQt5XcbQpa.so.5.12.2  /mnt/win/Centos764share/pic
cp libQt5DBus.so.5.12.2  /mnt/win/Centos764share/pic

然后将找到的两个依赖库重命名为链接文件,方便脚本查找

[l@localhost pic]$ mv libQt5XcbQpa.so.5.12.2 libQt5XcbQpa.so.5
 [l@localhost pic]$ mv libQt5DBus.so.5.12.2 libQt5DBus.so.5

最后输入:

[l@localhost pic]$ ./pack.sh
 [l@localhost pic]$ ./ToolBox.sh


 

应用程序就打开了,打包的文件夹移植到别的电脑运行脚本也可以实现