虚拟机安装Linux系统(版本:Centos7),QtCreator 的版本为5.12.2。
打包方式有两种一种是用脚本进行打包,另一种是用Linuxdeployqt,网上的资料说第二种是在Linux(Ubuntu)进行打包的,尝试无果卡在了配置Qt环境变量上。第一种方法比较简单,现总结如下:
1.利用QtCreator生成release版本,将对应生成的文件夹下的可执行文件拷贝到打包文件夹。这里要注意打包文件夹的名字不能有中文和空格,不然后面总提示说不是路径。
将这里的ToolBox(属性是可执行文件),双击是可以运行的,但是这个文件是不能在别的电脑上运行的,因此需要把它依赖的库进行打包,我的打包文件夹的路径是/mnt/win/Centos764share/pic,把这个可执行文件拷贝到该文件夹下。
2.添加脚本文件pack.sh和ToolBox.sh。因为是新手我写的就细致一点吧,如何写脚本文件
光标停在/mnt/win/Centos764share/pic这个文件夹里,然后右键点出终端,然后输入
touch pack.sh
touch ToolBox.sh
用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增加可执行权限
倒数第二行忽略
考虑到别的电脑不一定有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
应用程序就打开了,打包的文件夹移植到别的电脑运行脚本也可以实现