下文中提及的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目录下
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
下文中提及的inuxdeployqt patchelf appimagetool工具及示例下载地址:链接: https://pan.baidu.com/s/1BGm_btMIe75uW9hOC09Xlg提取码: 7ayh需要创建目录及文件xxx.AppDirxxx.AppDir/AppRun-----------------------------------...
linux
下的
qt
自动查找依赖
文件
,
打包
工具。有同学连不上github,为了方便大家,可以从这里下载。当然也可以直接去git下载,地址:https://github.com/probonopd/
linux
depl
oyqt
/releases
参考博客地址:
https://blog.csdn.net/zyhse/article/details/106381937#comments_13078337
文章目录1.
linux
depl
oyqt
源码编译下载
linux
depl
oyqt
源码包,6版本的执行下面的步骤遇到报错 对‘ucal_clone_56’未定义的引用2. 解决依赖
linux
depl
oyqt
package -
app
image
报错 ERROR: Could not start patchelf报错 sh: 1:
app
image
tool
: not found运行
linux
depl
oyqt
package
1.
linux
depl
oyqt
源码编译
下载
linux
depl
oyqt
源码包,6版本的
app
inage
打包
方法
本篇记录了自己在
ubuntu
系统上开发好了一个项目(C++)后,想要对工程进行一个发布,使得该工程只通过一个可执行
文件
和相应的一个初始化指令,便使得整个工程可以运行。
可以通过利用
app
image
工具对项目进行一个
打包
。
整体介绍:
打包
需要两个工具:(1)
app
image
tool
,
下载地址: https://
app
image
.github.io/
app
image
tool
/
(2)
linux
depl
oy,
下载地址:https://github.com/
linux
depl
oy/
1.1下载
linux
depl
oyqt
的
程序
(
打包
qt
程序
的工具)
https://github.com/probonopd/
linux
depl
oyqt
/releases
下载
app
image
的包
linux
depl
oyqt
-7-x86_64.
App
Image
下载下来更改一下权限sudo chmod 777
linux
depl
oyqt
-7-x86_64.
App
Image
arm的话,自行编译吧
1.2下载
app
image
kit(
app
image
在
linux
下对开发的
Qt
应用,进行拷贝依赖
文件
so等,并打
成
deb安装包;
实现可安装、卸载,安装完毕自动在开始菜单下和桌面添加快捷方式;
卸载后自动删除快捷方式,以及删除应用生
成
的log
文件
。
测试环境:
ubuntu
16.04
一、
使用
linux
depl
oyqt
拷贝依赖
文件
win系统下有个自动拷贝依赖
文件
的工具win
depl
oyqt
,而
linux
系统下也有个类似的工具,叫
linux
depl
oyqt
,原理一个意思。
该工具的帮助文档:https://github.
以前,
Linux
. 因为发行版众多,给不同的发型版适配
打包
,非常麻烦。
同样一套代码,在不同的发行版上编译出来以后,调用的动态连接库不一样,于是得分别编译。而不同的发行版上面,
使用
的
打包
工具,也是千差万别,需要分别
打包
,手动编写各种spec、debs等等。
现在有了
App
Image
.,这种状况一下子就改观了许多。
App
Image
文件
的
使用
App
Image
文件
,是一个包含了所有依赖的二进制包。我们下载了一个
App
Image
以后,只需要两步,就可以让
程序
运行起来。
假如我们下载了一个apvlv.
App
Ima
git clone https://github.com/keystone-engine/keystone.git
git clone https://github.com/lzscxb/navicat-keygen.git
https://github.com/
App
Image
/
App
Image
Kit/release
liwqky:
linux-ubuntu下使用linuxdeployqt+appimagetool将qt程序打包成xxx.AppImage文件
liwqky: