相关文章推荐
寂寞的眼镜  ·  python - ...·  3 年前    · 

https://github.com/probonopd/linuxdeployqt/releases

下载appimage的包linuxdeployqt-7-x86_64.AppImage

下载下来更改一下权限sudo chmod 777 linuxdeployqt-7-x86_64.AppImage
arm的话,自行编译吧

1.2下载appimagekit(appimage工具)

https://github.com/AppImage/AppImageKit/releases/

下载appimage的包appimagetool-x86_64.AppImage

下载下来更改一下权限sudo chmod 777 appimagetool-x86_64.AppImage

1.3本地环境安装

sudo apt install patchelf

1.4配置qt的位置

sudo vim ~/.bashrc {编辑 ~/.bashrc}
在这里插入图片描述

配置qt5的环境

这里配置的qt环境由于我是使用deepinV20.2系统,系统自带qt5.15,我就才用了系统的环境

如果是自行安装的采用自行安装的路径即可

export PATH=/usr/lib/x86_64-linux-gnu/qt5/bin:$PATH

export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH

export QT_PLUGIN_PATH=/usr/lib/x86_64-linux-gnu/qt5/plugins:$QT_PLUGIN_PATH

export QML2_IMPORT_PATH=/usr/lib/x86_64-linux-gnu/qt5/qml:$QML2_IMPORT_PATH

二.开始打包

2.1编译出可执行程序(realease版本)

获得可执行程序,将可执行程序拷贝到随便一个文件夹

这里就拷贝到文件夹11内

2.2linuxdeployqt发力

在这里linuxdeployqt-7-x86_64 登场

直接对可执行程序进行操作

./linuxdeployqt-7-x86_64.AppImage 程序目录/程序 -appimage
在这里插入图片描述
报错了,因为glic版本问题
在这里插入图片描述
在这里插入图片描述

如果glic>=2.27,你就需要加上参数 -unsupported-allow-new-glibc (意思就是不再低版本发行版使用了)或 -unsupported-bundle-everything(大概的意思是尝试兼容,实际测试,到其他发行版直接用不了了,有可能是发行版的原因,还是建议用前者,虽然放弃了低版本)

-unsupported-bundle-everything: 捆绑所有依赖库,包括 ld-linux.so 加载器和 glibc。这将允许构建在较新系统上的应用程序在较旧的目标系统上运行,但不建议这样做,因为它会导致捆绑包超出所需的大小(并且可能到其他发行版无法使用)
-unsupported-allow-new-glibc:允许 linuxdeployqt 在比仍受支持的最旧 Ubuntu LTS 版本更新的发行版上运行。这将导致 AppImage无法在所有仍受支持的发行版上运行,既不推荐也不测试或支持

./linuxdeployqt-7-x86_64.AppImage 程序目录/程序 -appimage -unsupported-allow-new-glibc

./linuxdeployqt-7-x86_64.AppImage 程序目录/程序 -appimage -unsupported-bundle-everything

大部分的依赖项都到了该程序目录内
在这里插入图片描述

2.3修改desktop

因为默认生成的desktop存在问题,直接使用appimagetool打包会出现以下显示
在这里插入图片描述

appimagetool, continuous build (commit effcebc), build 2084 built on 2019-05-01 21:02:41 UTC
WARNING: appstreamcli command is missing, please install it if you want to use AppStream metadata
Categories entry not found in desktop file
.desktop file is missing a Categories= key

他提醒你,缺少Categories= key,由于我们是qt程序,大部分是application,所以一般都是这样增加配置
在这里插入图片描述

Categories=Application;
在这里插入图片描述

更改名字那些就是跟freedesktop的教程一样,这里提供一个吗模板

[Desktop Entry]
Categories=Application;
Comment=x11opacity-tool
Comment[zh_CN]=linux窗口透明工具
Encoding=UTF-8
Exec=AppRun %F
GenericName=x11opacity-tool
GenericName[zh_CN]=linux窗口透明工具
Icon=default
Name=x11opacity-tool
Name[zh_CN]=linux窗口透明工具
StartupNotify=false
Terminal=false
Type=Application

修改了desktop文件

2.4appimagetool发力

执行 ./appimagetool-x86_64.AppImage 程序目录

生成成功!!,一个appimage包就打好了

执行 在这里插入图片描述
这里应该是跨发行版执行

liuminghang0821@gmail.com

2、将 Qt 打包 脚本“deploy qt app .sh”放在build-项目名称-Desktop_4bec8a-Release文件夹内,deploy qt app .sh源码如下: 注意:将第98行的libqxcb.so 替换到本机下“libqxcb.so”的路径。 3、执行“deploy qt app .sh”脚本,XXX表示在build-项目名称-D 1、遇到的问题 1、 打包 后的 app image 双击运行时QLocalServer单例未生效 2、修复单例问题后,启动时有两个进程,下一个应用运行后只退出了一个进程,又新增了两个进程 2、解决方案 猜测和 app image 机制有关,查看官方文档上有一段说明是不能使用绝对路径,查看QLocalServer文档介绍说在windows上 是管道实现, linux 上是文件实现,此时就猜测是QLoca... 1. linux deploy qt https://download.csdn.net/download/leoeitail/11257960 2.patchelfhttps://download.csdn.net/download/leoeitail/11257992 3: app image tool https://download.csdn.net/download/leoe... app inage 打包 方法 本篇记录了自己在ubuntu系统上开发好了一个项目(C++)后,想要对工程进行一个发布,使得该工程只通过一个可执行文件和相应的一个初始化指令,便使得整个工程可以运行。 可以通过利用 app image 工具对项目进行一个 打包 。 整体介绍: 打包 需要两个工具:(1) app image tool , 下载地址: https:// app image .github.io/ app image tool / (2) linux deploy, 下载地址:https://github.com/ linux deploy/ 在windows平台上,我们可以将 Qt 程序 和依赖的动态库 打包 到一起独立运行。这种方式虽然使安装包的体积变大了,但也简化了 打包 流程,使得执行 程序 更加独立自主,不再依赖系统库。 在 Linux 下我们也可以采用同样的方案进行处理。采用 App Image 格式,我们可以将 程序 运行所需的所有依赖库 打包 到执行 程序 中,这样一来不管系统库怎样变化,我们的执行 程序 都不会受到影响。 App Image 是一种包含 程序 运行所需所有依赖库的文件格式。 App Image 文件其实是一个镜像文件,当你运行 App Image 程序 的时候镜像文件就会被 下文中提及的inuxdeploy qt patchelf app image tool 工具及示例下载地址: 链接: https://pan.baidu.com/s/1BGm_btMIe75uW9hOC09Xlg 提取码: 7ayh 需要创建目录及文件 xxx. App Dir xxx. App Dir/ App Run-----------------------------------... 在 linux 下对开发的 Qt 应用,进行拷贝依赖文件dll等,并打 deb安装包; 实现可安装、卸载,安装完毕自动在开始菜单下和桌面添加快捷方式; 卸载后自动删除快捷方式,以及删除应用生 的log文件。 测试环境:ubuntu 16.04 一、使用 linux deploy qt 拷贝依赖文件 win系统下有个自动拷贝依赖文件的工具windeploy qt ,而 linux 系统下也有个类似的工具,叫 linux deploy qt ,原理一个意思。 1. 下载 linux deploy qt 这篇文章主要介绍 app image 包如何转化为符合uos规范的deb包 一,获取 app image 包并解压 1,本文档使用obsidian 程序 进行演示从 app image 包改 uos的deb包的过程示例. 2,从obsidian官网下载 app image 包 3,在桌面创建obsidian文件夹,将下载好的 app image 包放到该目录 uos@uos-PC:~/Desktop/obsidian$ ls Obsidian-0.12.3. App Image uos@uos-PC:~/Desktop/obsidian$ 问题很简单,因为不管 app image 有多么强大,但是你总得现有一个预编译的二进制版本,这个版本不是天上掉下来的,是编译出来的,既然有编译,就肯定有编译环境,就得引用固定版本的API,例如是在ubuntu14.04下编译的C 程序 ,那么一定依赖了ubuntu14.04依赖的一些API,可能来自glibc,可能还包含其他API。1. App Image 使用通用的软件格式,通过将整个软件 打包 App Image ,一个包包含了所有的功能. 并且几乎可以在所有的 linux 发行版本中使用。不需要安装,直接执行。...