• deepin(深度)系统下qt5.12.0的程序打包发布给其他linux机器使用


    这次我使用的是linuxdeployqt进行程序的打包,发现很好用
    第一步:去下载linuxdeployqt的源码
    地址:https://github.com/probonopd/linuxdeployqt/releases
    在这里插入图片描述选择源代码下载,zip或者tar.gz的格式都行

    下载完后,复制到一个没有中文路径下的地方,解压,然后进入linuxdeployqt的目录下,有一个linuxdeployqt.pro的qt文件,用qt打开它
    在这里插入图片描述
    打开后,把tools中的main函数注释版本比较的内容,如下图所示
    在这里插入图片描述
    启动命令行,安装下一些依赖:sudo apt-get -y install g++ libgl1-mesa-dev
    然后选择release进行编译
    在这里插入图片描述
    编译完成后,会在目录下生成Release/bin目录,里面有生成的qt部署文件
    在这里插入图片描述
    为了方便使用,可以将其复制到/usr/bin

    sudo cp linuxdeployqt /usr/bin
    
    • 1

    然后我们要配置qt环境,利用.bashrc文件存储并加载你的终端配置和环境变量以提高在终端中的工作效率

    vim ~/.bashrc 
    
    • 1

    在文件末尾添加你的qt相对应的路径,我的路径如下

    export PATH=/home/yicaobao/Qt5.12.0/5.12.0/gcc_64/bin:$PATH
    export LD_LIBRARY_PATH=/home/yicaobao/Qt5.12.0/5.12.0/gcc_64/lib:$LD_LIBRARY_PATH
    export QT_PLUGIN_PATH=/home/yicaobao/Qt5.12.0/5.12.0/gcc_64/plugins:$QT_PLUGIN_PATH
    export QML2_IMPORT_PATH=/home/yicaobao/Qt5.12.0/5.12.0/gcc_64/qml:$QML2_IMPORT_PATH
    
    • 1
    • 2
    • 3
    • 4

    然后保存修改,输入执行source ~/.bashrc使配置生效。
    然后在安装patchelf,patchelf 是一个用来修改elf格式的动态库和可执行程序的小工具,可以修改动态链接库的库名字,以及链接库的RPATH。在使用linuxdeployqt来打包时会用到
    安装命令如下:

    sudo apt install patchelf
    
    • 1

    到此配置都完成了,接下来就可以打包发布了
    选择我们编译好的release模式下的 文件
    在这里插入图片描述
    在当前可执行程序目录下,或者将可执行程序复制到你想要打包的目录下,输入

    linuxdeployqt UpdateServer -appimage
    
    • 1

    第二个参数是想要打包的可执行程序
    在这里插入图片描述
    最后一个not found ,不用理会
    有可能会提示如下:
    在这里插入图片描述
    错误:桌面文件丢失,正在创建默认文件(您可能需要编辑它)
    错误:图标文件丢失,正在创建默认文件(您可能需要编辑它)
    这些不用理会
    为防止程序需要额外的库依赖:qt在编写一个脚本,把当前程序可能需要的其他库打包到指定目录下

    #!/usr/bin/sh
    exe="UpdateServer" #程序名称
    des="/home/yicaobao/qtProjects/UpdateServer/bin/release/extraLib" #打包文件夹位置
    deplist=$(ldd $exe | awk  '{if (match($3,"/")){ printf("%s "),$3 } }')
    cp $deplist $des
    
    • 1
    • 2
    • 3
    • 4
    • 5

    注意修改里面的参数,根据自己的程序名,打包位置修改,然后执行脚本
    在这里插入图片描述
    打包后,如果extraLib里面存在lib下的已有库,可以删掉,留下没有的即可。

    然后我们打包压缩release目录,拷贝或者发送到其他没有qt环境的linux机器中,解压,执行AppRun或者我们的执行文件,如果提示找不到某某库,但是我们程序的lib目录下的话,就要指定一下库路径

    如果在extraLib目录下存在的话,可以拷贝extraLib的那个库到lib目录下,或者指定库路径

    编辑 /etc/ld.so.conf 文件,添加库的搜索路径。

    vim  /etc/ld.so.conf
    
    • 1

    在这里插入图片描述
    这样就没啥问题了,成功运行
    在这里插入图片描述

  • 相关阅读:
    008:字符串交换,输入两个长度为4的字符串,交换这两个字符串的前两个字符后输出
    FX粒子(Niagara系统)、潮湿贴花——简单雨和雨后潮湿
    100天精通Python(可视化篇)——第106天:Pyecharts绘制多种炫酷桑基图参数说明+代码实战
    tp6教程
    Selenium安装以及案例演示【Java爬虫】
    08Java算术运算符/除法与取模/隐式转换/强制转换/字符串相加/字符相加
    RSA算法中,为什么需要的是两个素数?
    使用perming加速训练可预测的模型
    OpenCV项目开发实战之一种预测图像质量得分的算法--附完整C++/Python实现源代码
    2000-2020年各省固定资本存量数据
  • 原文地址:https://blog.csdn.net/qq_44667165/article/details/127609929