Ubuntu下使用脚本打包QT程序

Ubuntu版本:18.04

QT版本:5.7.0

例如程序名为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,文件内容如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    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,并在其中加入如下代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    #!/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

------ 本文结束------