RedHat下QT程序打包方法

本文以tcpServer程序为例进行介绍。

  1. 找个地方,比如桌面,创建空文件夹TcpServer(名字任取),这个文件夹将用来存放tcpServer运行程序以及所有相关库文件
  2. 先将QT工程使用Release模式进行编译
  3. 找到编译的构建目录,例如build-tcpServer-Desktop_Qt_5_6_3_GCC_64bit-Release
  4. 在第3步提到的文件夹中新建空文件copylib.sh,设置权限chmod 777 copylib.sh
  5. 在 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 
    done
    

     

  6. 打开终端并进入当前文件夹,输入./copylib.sh tcpServer(Release版本的可执行程序),其中,tcpServer是运行copylib.sh 脚本的参数,脚本实际上是调用了 ldd tcpServer指令获得tcpServer运行时需要哪些库,并将需要的库文件都复制放到一个lib文件夹中。运行完脚本后,当前文件夹会生成lib文件夹,将lib文件夹中的库文件全部复制到TcpServer文件夹

  7. 进入QT的安装目录,找到platforms文件夹,如我安装的是QT5.6.3,则进入~/Qt5.6.3/5.6.3/gcc_64/plugins/platforms,将整个platforms文件夹复制到TcpServer文件夹中,注意:这时复制的是整个文件夹,这使得TcpServer文件夹中会多出一个platforms文件夹
  8. 将上文的copylib.sh放到刚刚复制到TcpServer文件夹内的platforms文件夹中,并运行./copylib.sh libqxcb.so,这时会得到一个新的lib文件夹,将该lib文件夹中的文件全部复制到TcpServer文件夹中,出现重复文件覆盖即可
  9. 在TcpServer文件夹中新建空脚本文件tcpServer.sh,执行chmod 777 tcpServer.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 "$@"
    

     

  10. 将tcpServer程序复制到TcpServer文件夹内,可以有两种方法运行程序,直接运行tcpServer.sh脚本,或者终端运行tcpServer程序
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值