linux-ubuntu下使用linuxdeployqt+appimagetool将qt程序打包成xxx.AppImage文件

  • xuxiang
  • 7
  • 2019-09-18 21:07

下文中提及的inuxdeployqt   patchelf    appimagetool工具及示例下载地址:

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

提取码: 7ayh

需要创建目录及文件

xxx.AppDir

xxx.AppDir/AppRun-----------------------------------xx.AppImage运行时执行的程序,AppRun可以是可执行程序,也可以是脚本文件。

xxx.AppDir/usr

xxx.AppDir/usr/bin/xx--------------------------------主程序

xxx.AppDir/usr/lib-----------------------------------库目录

xxx.AppDir/usr/share/applications/xx.desktop---------界面程序启动文件

xxx.AppDir/usr/share/icons/hicolor/xx.png------------界面程序图标

打包步骤 一、准备打包文件 将 linuxdeployqt   patchelf    appimagetool等文件 拷贝到系统目录下   /bin    并赋予可执行权限chmod a+x

将终端切换到xxx.AppDir同级的目录下

qt程序的打包先执行以下命令,将依赖库自动收集到xx.AppDir/usr目录下

linuxdeployqt xx.AppDir/usr/share/applications/xx.desktop

xx.desktop和xx.png文件会被拷贝到xx.AppDir目录下

非qt程序的打包需要先将

xx.desktop和xx.png文件手动放到xx.AppDir目录下

二、将AppRun放到xx.AppDir目录下 三、执行打包 命令    appimagetool  xx.AppDir

AppRun示例如下: #!/bin/sh

SELF=$(readlink -f "$0")

HERE=${SELF%/*}

export PATH="${HERE}/usr/bin/:${HERE}/usr/sbin/:${HERE}/usr/games/:${HERE}/bin/:${HERE}/sbin/${PATH:+:$PATH}"

export LD_LIBRARY_PATH="${HERE}/usr/lib/:${HERE}/usr/lib/i386-linux-gnu/:${HERE}/usr/lib/x86_64-linux-gnu/:${HERE}/usr/lib32/:${HERE}/usr/lib64/:${HERE}/lib/:${HERE}/lib/i386-linux-gnu/:${HERE}/lib/x86_64-linux-gnu/:${HERE}/lib32/:${HERE}/lib64/${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}"

export PYTHONPATH="${HERE}/usr/share/pyshared/${PYTHONPATH:+:$PYTHONPATH}"

export XDG_DATA_DIRS="${HERE}/usr/share/${XDG_DATA_DIRS:+:$XDG_DATA_DIRS}"

export PERLLIB="${HERE}/usr/share/perl5/:${HERE}/usr/lib/perl5/${PERLLIB:+:$PERLLIB}"

export GSETTINGS_SCHEMA_DIR="${HERE}/usr/share/glib-2.0/schemas/${GSETTINGS_SCHEMA_DIR:+:$GSETTINGS_SCHEMA_DIR}"

export QT_PLUGIN_PATH="${HERE}/usr/lib/qt4/plugins/:${HERE}/usr/lib/i386-linux-gnu/qt4/plugins/:${HERE}/usr/lib/x86_64-linux-gnu/qt4/plugins/:${HERE}/usr/lib32/qt4/plugins/:${HERE}/usr/lib64/qt4/plugins/:${HERE}/usr/lib/qt5/plugins/:${HERE}/usr/lib/i386-linux-gnu/qt5/plugins/:${HERE}/usr/lib/x86_64-linux-gnu/qt5/plugins/:${HERE}/usr/lib32/qt5/plugins/:${HERE}/usr/lib64/qt5/plugins/:${HERE}/usr/plugins/${QT_PLUGIN_PATH:+:$QT_PLUGIN_PATH}"

EXEC=$(grep -e '^Exec=.*' "${HERE}"/*.desktop | head -n 1 | cut -d "=" -f 2 | cut -d " " -f 1)

exec "${EXEC}" "$@"

xx.desktop示例如下: [Desktop Entry]

Type=Application

Name=xx

Exec=xx

Comment=Tool to generate AppImages from AppDirs

Icon=logo

Categories=Development;

Terminal=false

参考: 1、打包步骤参考

https://github.com/probonopd/linuxdeployqt/blob/master/BUILDING.md

打包过程中需要的软件 linuxdeployqt   patchelf    appimagetool   AppRun

集成包linuxdeployqt-5-x86_64.AppImage-----集成了linuxdeployqt   patchelf    等

集成包appimagetool-x86_64.AppImage----------集成了appimagetool   AppRun 等

将qt5.8 打包成  QtCreator-5.8.0-x86_64.AppImage https://bintray.com/probono/AppImages/QtCreator/5.8.0#files

https://github.com/probonopd/linuxdeployqt/wiki/Custom-wrapper-script-instead-of-AppRun#example-wrapper-in-bash

Create the appdir/ directories (appdir/usr/bin, appdir/usr/share/applications, ...). Create the wrapper script or program. Copy the main executables, not the wrapper, into appdir/usr/bin/. Copy the .desktop files into appdir/usr/share/applications/. Note that the desktop files' Exec=should still point to your executables, not the AppRun. Copy the icon file into appdir/usr/share/icons/hicolor/. Copy any other resources you may wish (Qml, etc). Run linuxdeployqt appdir/usr/share/application/*.desktop with any options you may need. Remove appdir/AppRun which is created by linuxdeployqt. Copy your wrapper in appdir/AppRun (i.e. to the place of the AppRun that was there). Run appimagetool appdir to create your image. (Note: there is a bug that may require you run this step twice).

AppRun 脚本的示例

#!/bin/bash HERE="$(dirname "$(readlink -f "${0}")")" export LD_LIBRARY_PATH=${HERE}/usr/lib/foobar:$LD_LIBRARY_PATH exec "${HERE}/usr/bin/foo" "$@"

2、打包软件下载

https://github.com/probonopd/linuxdeployqt

https://github.com/AppImage/AppImageKit

linux-ubuntu下使用linuxdeployqt+appimagetool将qt程序打包成xxx.AppImage文件相关推荐

  1. linux下将qt程序打包成appimage程序

    linux下将qt程序打包成appimage程序 一.环境准备 1.1下载linuxdeployqt的程序(打包qt程序的工具) https://github.com/probonopd/linuxd ...

  2. [Linux]Ubuntu下用apt-get安装的应用程序位置

    Ubuntu下用apt-get安装的应用程序的可执行文件默认放到/usr/bin目录下. 比如: 运行eclipse命令,如果出现:"程序eclipse未安装",这样我们可以执行: ...

  3. ubuntu进入桌面自动启动脚本_在 Ubuntu 下开机自启动自己的 QT 程序而不启动 Ubuntu 的桌面...

    1. /etc/profile 方式 实现这个功能,要完成两步: 1.系统设置-> 用户账户-> 点击我的账户-> 点击右上角的解锁-> 打开自动登录-> 点击右上角的锁 ...

  4. QT程序打包成应用程序方法(Windeployqt)

    QT项目打包发布步骤(Windeployqt) 1.选择Release版本发布生成工程文件 2.拷贝可执行文件 找到生成的Release文件夹,将根目录下的Release文件夹中的test.exe文件 ...

  5. ubuntu qt linux 下载文件,Qt ------ linux(ubuntu) 下用 linuxdeployqt 打包发布程序

    https://github.com/probonopd/linuxdeployqt/releases github上提供了两种安装linuxdeployqt的方法,分别是直接下载编译好的安装包安装, ...

  6. linux php 执行python,Linux(Ubuntu)下php使用exec调用python程序返回json数据

    问题起因:解决乱码问题,及解决PHP调用python外部程序的权限问题 数据中带有中文,数据来自python读取微软数据库mssql2005 server的数据 操作注意事项主要有两点: 1.pyth ...

  7. linux下qt多个程序打包,解决Ubuntu下使用linuxdeployqt打包Qt程序问题

    写了点Qt界面程序,然而发现很难移植到其他没有安装Qt环境的电脑上运行.查资料了解到,在windows上有windowsdeployqt程序,linux上有linuxdeployqt可以帮助我们快速打 ...

  8. qt程序在Linux下字体乱了,解决linux/Ubuntu下Qt creater 界面程序在编译运行后无法显示中文或中文乱码问题!...

    本文解决的主要是界面程序编译运行后无法显示中文的问题,如果在creater 中无法输入中文,下载个IBus或者搜狗之类的中文输入法即可解决! 首先说乱码问题,这个很好解决: 如果是在linux下打开W ...

  9. qt调用linux 进程,Linux 下qt 程序打包发布(使用linuxdelpoyqt ,shell 脚本)

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/u014746574/article/d ...

最新文章

  1. RDLC 2010设计器的数据源无法找到静态类作为数据源
  2. 表单一次性上传多个文件
  3. linux open 头文件_linux下通过共享内存和mmap实现进程间通讯
  4. Android实现拍照并存储功能,Android实现拍照及图片显示效果
  5. 【项目经验】如何用TexturePacker Physicseditor开发游戏
  6. 通过Java得到的时间与操作系统时间不一致,如何修改Java虚拟机时间?
  7. 计算机四级知识试卷答案,计算机四级考试试题及答案
  8. 徐家骏写给任正非的辞职信
  9. 百度网盘不限速下载百度文科文档免会员下载
  10. 济南2017年春考计算机考试试题,2017年山东省春季高考机械试题.pdf
  11. XMPP即时通讯协议使用(前传)——协议详解
  12. mybatisplus的逻辑删除
  13. 中国机读目录格式(CNMARC)
  14. free-mybatis-plugin插件下载
  15. 将心比心,你对别人好,别人才会对你好,是真的吗?
  16. 计算机A类会议 icip,计算机视觉|中国计算机学会推荐国际学术刊物/会议
  17. Asciinema - 终端日志记录神器,机器学习开发者的福音
  18. flutter图片聊天泡泡_Flutter 气泡效果合集(全网最全)
  19. 模拟电路设计(34)---脉宽调制型开关电路
  20. 中国大学生实习大数据分析报告

热门文章

  1. Ubuntu环境QT报错:-1 error: cannot find -lGL(解决99%)
  2. 《代码大全》读书笔记及随想(day02)
  3. 视频伪原创方法 手机视频怎么修改md5值
  4. U-Mail反垃圾邮件网关过滤Locky勒索邮件
  5. WiFi共享精灵的使用说明
  6. linux6.5ibm存储挂载,ESXI 6.7利用ISCSI挂载联想V3500存储的方法
  7. Xshell找不到MSVCP110.dll与MSVCR110.dll
  8. 基于Android的应用市场软件的设计
  9. win10系统能用ftp服务器失败,win10 能用的ftp服务器
  10. mysql双主故障自动切换_mysql双主热备宕机自动切换