Linux发布Qt程序

已经在Ubuntu上实测没有问题。

  1. 创建脚本 copylib.sh ,并执行 chmod 777 copylib.sh
    #!/bin/bash
    
    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
        echo $Variable
    done
    

     

  2. 使用 copylib.sh 脚本,在Qt编译出的可执行文件(为了方便,假设其名为TestProgram)的release文件夹下,执行 ./copylib.sh TestProgram ,得到其需要的动态库,在lib文件夹中。
  3. 使用 copylib.sh 脚本,在 Qt安装路径/5.12.2/gcc_64/plugins/plantforms 中,执行 ./copylib.sh libqxcb.so,得到 libqxcb.so 的依赖动态库,在lib文件中。
  4. 将所有得到的动态库以及TestProgram复制到要打包的文件夹中;
  5. 将 Qt安装路径/5.12.2/gcc_64/plugins 复制到要打包的文件夹中;
  6. 创建脚本 TestProgram.sh ,并 chmod 777 TestProgram.sh,运行程序执行 ./TestProgram.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 "$@"
    

     

  7. 对于需要使用了 QOpenGLWidget 的程序,需要将文件夹 Qt安装路径/5.12.2/gcc_64/plugins/xcbglintegrations 拷贝到要打包的文件夹中

你可能感兴趣的:(QT,linux,ubuntu)