Linux发布Qt程序

3 篇文章 0 订阅
2 篇文章 0 订阅

已经在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
    

    不过这样会包含大量的系统库,比较烦,可以只包含一些/usr/local/路径下的库:

    #!/bin/bash
    
    LibDir=$PWD"/lib"
    Target=$1
    
    lib_array=($(ldd $Target | grep -o "/.*" | grep -o "/.*/[^[:space:]]*"))
    
    $(mkdir $LibDir)
    
    for Variable in ${lib_array[@]}
    do
            if [[ "$Variable" =~ ^/usr/local/.* ]];
            then
            cp "$Variable" $LibDir
            echo $Variable
    fi
    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 拷贝到要打包的文件夹中。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值