在windows平台上,我们可以将Qt程序和依赖的动态库打包到一起独立运行。这种方式虽然使安装包的体积变大了,但也简化了打包流程,使得执行程序更加独立自主,不再依赖系统库。

在Linux下我们也可以采用同样的方案进行处理。采用AppImage格式,我们可以将程序运行所需的所有依赖库打包到执行程序中,这样一来不管系统库怎样变化,我们的执行程序都不会受到影响。

AppImage是一种包含程序运行所需所有依赖库的文件格式。AppImage文件其实是一个镜像文件,当你运行AppImage程序的时候镜像文件就会被装载。AppImage文件本身是只读的,可以独立的运行在系统沙盒当中。

在AppImage文件打包的时候,我们先使用Linuxdeployqt提取程序的依赖库,由于Linuxdeployqt不是Qt官方的工具,我们需要自己下载安装。项目的地址如下:

Linuxdeployqt

在提取依赖库之前,首先我们配置一下Qt程序的安装目录,确保通过脚本将编译好的可执行程序安装到对应的目录下。

//配置对应的可执行文件
linux{
target.path = $$_PRO_FILE_PWD_/../dist/Desktop-linux/root/usr/bin/
INSTALLS += target
}

安装Linuxdeployqt之后我们就可以通过下面的脚本,将执行程序打包成AppImage格式了。脚本内容如下:

#!/bin/bash
#设置构建目录和打包目录
DIST_DIR=dist/Desktop-linux
BUILD_DIR=build#qt的安装目录
#不同系统下的QT目录可能有所不同
QTDIR=/usr/lib/x86_64-linux-gnu/qt5#创建对应的目录
mkdir -p $DIST_DIR && cd $DIST_DIR
mkdir -p $BUILD_DIR
pushd $BUILD_DIR#对QT项目进行配置
$QTDIR/bin/qmake  -spec linux-g++  "CONFIG += release" ../../../transform/transform.pro
make qmake_all#编译和安装
#make install会将对应的文件安装到指定目录
make && make install
popd#将QT库的路径添加到环境变量
export PATH=/usr/lib/x86_64-linux-gnu/qt5/bin:$PATH#在打包之前需要配置包的快捷方式和对应的图标
#更多细节可以参考Linuxdeployqt项目
#编译完成之后的打包文件的目录结构如下:
#└── usr
#    ├── bin
#    │   └── transform
#    ├── lib
#    └── share
#        ├── applications
#        │   └── transform.desktop
#        └── icons
#           └── <theme>
#               └── <resolution>
#                   └── apps
#                       └── transform.png
#将theme修改为hicolor resolution修改为256x256
#然后将对应尺寸的图标放到对应的目录下#通过linuxdeplyqt工具进行打包
#@1快捷方式的地址 @2打包文件格式
linuxdeployqt ./root/usr/share/applications/transform.desktop -appimage

transform.desktop是应用程序的快捷方式文件,文件的内容如下:

[Desktop Entry]
Type=Application
Name=Transform
Comment=Test Applicaiton for Qt
Exec=transform
Icon=transform
Categories=Office;

其中Exec和Icon分别指明了应用程序的名称和图标的名称,Type指明了应用的类型,Name指的是快捷方式的显示名称。

如果想了解更多的关于快捷方式的配置信息可以参考对应的官方链接

Desktop Entry

打包完成之后的appImage文件就可以在其他系统下面独立运行了。

如果大家不想自己编译linuxdeplyqt的话,官方也提供了可以独立运行的x86_64架构下的linuxdeployqt工具。如果官网下载麻烦的话,这里提供了百度网盘下载链接:

链接:https://pan.baidu.com/s/1OQk_n_DXT6dtNsr4yYM_gQ

提取码:evxu

为了方便大家的学习和使用这里将测试用到的打包数据分享出来,方便大家使用:

链接:https://pan.baidu.com/s/1hlRxdGXANYUSH-MWF1B7Ew

提取码:wifb

使用AppImage格式打包独立运行的Qt-Linux程序相关推荐

  1. linux后台运行cat命令,Linux程序前台后台切换

    Linux程序前台后台切换1.在Linux终端运行命令的时候,在命令末尾加上 & 符号,就可以让程序在后台运行Ubuntu$">root@Ubuntu$ ./tcpserv01 ...

  2. qt linux 程序设置字体,QT程序中显示中文字体解决办法

    最近一直在做移植qtopia4.4.3和QT4.7的工作.qtopia已经可以在龙芯开发板上正常运行.搭建QT4.7的环境,使用QT4.7编写小程序,发现不能显示中文.研究了一番,找到了如下的解决方法 ...

  3. 【Qt】Qt 开发桌面程序 ( Qt 版本 5.14.2 | 创建 Qt 桌面程序 | 构建并运行 Qt 桌面程序 )

    文章目录 一.创建 Qt 桌面程序 二.构建并运行 Qt 桌面程序 一.创建 Qt 桌面程序 首先要安装 Qt 开发环境 , 参考 [Qt]Qt 开发环境安装 ( Qt 版本 5.14.2 | Qt ...

  4. python 打包exe_将python文件打包exe独立运行程序方法详解

    首先需要安装pyinstaller库. pip install pyinstaller exe程序打包步骤 cmd 进入要编译的python文件所在的文件夹, 然后 pyinstaller -F he ...

  5. perl linux 独立运行,Perl脚本打包为独立执行程序

    Linux平台打包Perl脚本为独立运行程序 一.安装打包工具 安装注意事项: 1)尽量选择与这个Perl版本兼容的相关Perl模块: 2)由于PAR-Packer-1.013对perl版本需求决定, ...

  6. 使用Conda Pack打包Python独立运行时环境

    使用Conda Pack打包Python独立运行时环境 版本说明: python=2.7 Conda 的Pack工具,可以说是让我发现了新大陆.之前有个项目使用它解决了一个棘手的问题,一直没有整理相关 ...

  7. linux自己的软件在安装的时候如何创建快捷方式,在Deepin Linux系统下给AppImage格式软件创建快捷方式的方法...

    如果你想在深度Deepin Linux操作系统下给AppImage格式软件创建快捷方式,那就按以下说明处理,附脚本的方法,同样适用于其他的Linux发行版. 前言 最近下载了一个FreeCAD的软件, ...

  8. 【转】如何使用VS 2013发布一个可以在Windows XP中独立运行的可执行文件

    问题描述: 用VS2013写好一个程序,在本机上运行一切正常.但是如果直接把exe文件放到另一台机器上用,则会出现: Windows XP:不是一个正常的win32程序 Window 7:缺少msvc ...

  9. asp打开exe执行本地程序._基于QT应用程序打包成可执行程序exe

    [本文属原创,转载请附上原文出处链接.] 众所周知QT编译好的应用程序依赖很多动态链接库,不能方便的在其他PC上使用.这里介绍QT5版本的应用程序打包成可执行EXE的方法. 首先把QT应用程序项目编译 ...

最新文章

  1. MATLAB_no.1:入门作业_histeq():_imhist()_(男孩的三个图,以及文字描述)
  2. java 求最长子串
  3. 系统分析与设计结对项目———Wordcount
  4. Codeforces Round #613 (Div. 2) E. Delete a Segment 离散化
  5. 利用Underscore求数组的交集、并集和差集
  6. 今日心得:人生就像一杯茶,不会苦一辈子但会苦一阵子
  7. 第一次冲刺-站立会议03
  8. Jenkins 配置mirrors
  9. 逆向研究QCA9563固件,查看和修改GPIO定义
  10. qqxml图片代码_PCQQ - 发送自定义的XML卡片消息
  11. matlab if语句小于等于,matlab的if语句运算符与或怎么用
  12. 关于/etc/login.defs
  13. python怎么sqrt开方
  14. 影响网站排名的几大因素
  15. Learning-Based Approximation of Interconnect Delay and Slew in Signoff Timing Tools
  16. 教师节我用Python做了个学生点名系统送给老师当礼物,这回毕业稳了
  17. 21 C++ 长度单位转换
  18. 菜鸟Python实战-03爬虫之爬取数据
  19. UEFI开发探索32 – 有趣的图像特效
  20. 在Gitee搭建属于自己的博客

热门文章

  1. 【经典排序算法】二分查找法 (动图演示 + C 语言代码实现)
  2. java8 localdateTime转换时区
  3. 华哥倒酒区间标记,二分
  4. canvas绘制弧形
  5. List中addAll()方法简介
  6. java 容器 addall_Java LinkedList addAll()用法及代码示例
  7. 51节,致敬社区最可爱的人!全场5.1折,还有券,还有好吃的!!!
  8. 程序员电脑族喝什么茶对身体好?
  9. html + js实现多张图片上传、预览和删除
  10. 设计模式总结之没有结束的结尾