• linux下打包qt程序


    项目场景:

    Qt 提供了一个打包工具,叫做 deployqt,可以将应用程序所依赖的库文件都提取出来,并且支持跨平台。在 Windows 系统叫 windeployqt,在 Linux 系统叫 linuxdeployqt,在 Mac 下叫 macdeployqt。但是公司的破网下载个linuxdeployqt一直下载不下来,就找了另一种方法,记录下来,方便好用

    解决方法

    1.在Qt Creator中将需要打包的项目配置为Release模式,然后构建项目,在Release目录下生成可执行文件(例:DbDetect);

    2.新建一个文件夹作为输出目录(例:output(绝对路径为 /home/output)),将Release目录下的可执行文件DbDetect拷贝到输出目录output,并执行

    chmod +x DbDetect
    
    • 1

    3.打开终端,cd到输出目录output中(绝对路径为 /home/output),然后执行 ldd DbDetect 可以查看DbDetect依赖的所有库,然后将所有依赖的库拷贝至output文件夹下。这个操作比较繁琐,所以我们直接用脚本一次性拷贝,在output文件夹下新建cplib.sh,将以下内容粘贴至cplib.sh中:

    #!/bin/sh  
    exe="DbDetect"         #修改发布程序的名称
    des="/home/output/" #修改输出可执行文件路径
    deplist=$(ldd $exe | awk  '{if (match($3,"/")){ printf("%s "),$3 } }')  
    cp $deplist $des 
    
    • 1
    • 2
    • 3
    • 4
    • 5

    4.在终端执行chmod +x cplib.sh,然后执行 ./cplib.sh,此时所有依赖的库均被拷贝至output文件夹下。

    5.在output文件夹下新建DbDetect.sh文件,注意这里文件名一定是(可执行文件名 + .sh),将以下内容拷贝至DbDetect.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 "$@" 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    6.执行chmod +x DbDetect.sh,软件至此打包完成。注意:运行软件的时候,执行的是 ./ DbDetect.sh, 而不是直接运行DbDetect

    7.将输出文件夹拷贝至目标平台上会丢失执行权限,可以执行chmod +x DbDetectchmod +x DbDetect.sh,然后执行./DbDetect.sh即可运行软件。

  • 相关阅读:
    基于nodejs+vue市民健身中心网上平台mysql
    基于SSM的公选课的选课系统/选课系统的设计与实现
    汇编常用寄存器以及寻址方式
    自动驾驶辅助系统性能评估工具MXeval4.1版本更新快讯
    测试人员工作中常用的 git 语句汇总总结
    PyCharm安装和使用教程
    Java设计模式-结构性设计模式(享元设计模式)
    极简Emacs教程
    浅谈本地缓存的几种方案选型
    系统运维(零):安装系统时挂载点设置不当导致的麻烦
  • 原文地址:https://blog.csdn.net/u011942101/article/details/132694513