QT linux环境程序发布方法

本文介绍了如何在Ubuntu下使用linuxdeployqt工具将Qt5.12.0程序打包为免安装的AppImage,包括配置环境、修改源代码以适应新系统版本、添加程序依赖库及处理打包过程中可能出现的错误。
摘要由CSDN通过智能技术生成

参考Ubuntu下使用linuxdeployat打包发布免安装的Qt程序_error: the host system is too new. please run on a_zhaoem82的博客-CSDN博客

deepin(深度)系统下使用linuxdeployqt将qt5.12.0的程序打包发布_linuxdeploy打包_只是个~小不点的博客-CSDN博客

1. 配置环境

1.1安装依赖库

sudo apt install patchelf

1.2配置QT环境

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

vim ~/.bashrc

export PATH=/home/你的路经/Qt5.12.0/5.12.0/gcc_64/bin:$PATH
export LD_LIBRARY_PATH=/home/你的路经/Qt5.12.0/5.12.0/gcc_64/lib:$LD_LIBRARY_PATH
export QT_PLUGIN_PATH=/home/你的路经/Qt5.12.0/5.12.0/gcc_64/plugins:$QT_PLUGIN_PATH
export QML2_IMPORT_PATH=/home/你的路经/Qt5.12.0/5.12.0/gcc_64/qml:$QML2_IMPORT_PATH

2下载linuxdeployqt

        地址:Releases · probonopd/linuxdeployqt · GitHub

     (  我在附件里加了 linuxdeployqt 源码包Source code.tar.gz)

解压tar包

cd linuxdeployqt-continuous/ 进入目录 ,目录内容如下

2.1 修改linuxdeployqt源代码
 

为了避免编译好的包运行时检测到我们的系统版本过高,不继续执行的问题,我们编译前,将tools/linuxdeployqt/main.cpp(约200行附近)中的下述代码注释掉:

// openSUSE Leap 15.0 uses glibc 2.26 and is used on OBS
/*if (strverscmp (glcv, “2.27”) >= 0) {
qInfo() << “ERROR: The host system is too new.”;
qInfo() << “Please run on a system with a glibc version no newer than what comes with the oldest”;
qInfo() << “still-supported mainstream distribution, which currently is glibc 2.20.”;
qInfo() << “This is so that the resulting bundle will work on most still-supported Linux distributions.”;
qInfo() << “For more information, please see”;
qInfo() << “https://github.com/probonopd/linuxdeployqt/issues/340”;
return 1;
}
*/

2.2编译linuxdeployqt源代码

root@ubuntu:~/downloads/linuxdeployqt-6# ls
BUILDING.md LICENSE.GPLv3 linuxdeployqt.pro sync.profile
CMakeLists.txt LICENSE.LGPLv3 README.md tests
Dockerfile linuxdeployqt.AppDir src tools
root@ubuntu:~/downloads/linuxdeployqt-6# qmake
Info: creating stash file /home/laohu/downloads/linuxdeployqt-6/.qmake.stash
Info: creating cache file /home/laohu/downloads/linuxdeployqt-6/.qmake.cache
root@ubuntu:~/downloads/linuxdeployqt-6# make

编译出来的源程序会放在./bin目录下,然后将生成的程序放到/usr/local/bin/目录下(为了方便)

编译过程出错可参考:Ubuntu下使用linuxdeployat打包发布免安装的Qt程序_error: the host system is too new. please run on a_zhaoem82的博客-CSDN博客

3.发布程序

将可执行程序复制到空目录下,进入目录输入

linuxdeployqt yourappname -appimage

第二个参数是想要打包的可执行程序

最后一个not found ,不用理会
有可能会提示如下:

错误:桌面文件丢失,正在创建默认文件(您可能需要编辑它)
错误:图标文件丢失,正在创建默认文件(您可能需要编辑它)
这些不用理会

3.1添加程序依赖库
 

为防止程序需要额外的库依赖:在要打包的目录里编写一个pack.sh脚本,把当前程序可能需要的其他库打包到指定目录下(先创建目录extraLib)

#!/usr/bin/sh
exe="yourappname" #程序名称
des="/打包文件夹位置/extraLib" #打包文件夹位置
deplist=$(ldd $exe | awk  '{if (match($3,"/")){ printf("%s "),$3 } }')
cp $deplist $des

chmod +x pack.sh

sudo ./pack.sh

删掉extraLib里面存在lib下的已有库,留下没有的。

打包压缩,拷贝或者发送到其他没有qt环境的linux机器中,解压,执行AppRun或者我们的执行文件即可

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值