Ubuntu版本:18.04
QT版本:5.7.0
例如程序名为GPIO-TEST,请将文中所有GPIO-TEST修改为你自己的程序名
1. 找个目录创建文件夹用来存放打包的程序,/zdisk/MY_GPIO-TEST
2. 将工程用Release模式编译,直接运行项目就行了
3. 打开编译出文件夹的文件,我的路径如下:
/zdisk/qt-project/build-GPIO-TEST-Desktop_Qt_5_7_0_GCC_64bit-Release
4. 在Release文件夹创建文件copylib.sh,并修改权限为777,文件内容如下:
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
5. 打开终端进到当前文件夹,输入./copylib.sh GPIO-TEST
,会产生一个lib文件夹,这里称为GPIO-TEST库文件 脚本实际上是调用了ldd GPIO-TEST指令获得GPIO-TEST运行时需要哪些库,并将库都复制放到当前目录的lib文件夹中
6. 将GPIO-TEST的二进制文件和GPIO-TEST的库文件夹里的所有的文件复制到MY_GPIO-TEST文件夹中
7. 进入QT的安装目录,找到platforms文件夹,我的路径如下:
/opt/Qt5.7.0/5.7/gcc_64/plugins/platforms
8. 将上文的copylib.sh放到platforms文件夹中,并运行./copylib.sh libqxcb.so
,这时会得到libqxcb.so的库文件夹
9. 将libqxcb.so的库文件夹的所有文件和platforms文件夹复制到MY_GPIO-TEST文件夹中
10. 在MY_GPIO-TEST文件夹中新建脚本GPIO-TEST.sh,执行chmod 777 GPIO-TEST.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 "$@"
11. 到这里就基本完成了,将MY_GPIO-TEST文件夹复制到需要运行程序的目标主机即可,在目标主机中,运行程序,都采用 ./GPIO-TEST.sh 而不是./GPIO-TEST,即运行程序的sh脚本,而不是二进制文件
以上就是在ubuntu下使用脚本打包QT程序的方法!
参考链接:https://blog.csdn.net/z3512498/article/details/64922180