在 Ubuntu 上制作 AppImage 包,核心思路是:
把程序 + 依赖 + AppDir 结构 + AppRun 入口 + 桌面文件打包成一个可执行文件。
下面给你一个从零到可运行 AppImage 的完整流程,适用于大多数 Linux 程序(二进制、脚本、Qt/GTK 程序等)。
sudo apt update
sudo apt install -y \
build-essential \
wget \
fuse \
file \
desktop-file-utils
一个 AppImage 本质上是一个 AppDir 目录,结构如下:
MyApp.AppDir/
├── AppRun # 启动脚本(必须)
├── myapp # 可执行程序
├── usr/
│ ├── bin/
│ ├── lib/
│ └── share/
├── myapp.desktop # 桌面文件(必须)
└── myapp.png # 图标(必须)
mkdir -p MyApp.AppDir/usr/bin
假设你的程序是 myapp:
cp myapp MyApp.AppDir/usr/bin/
chmod +x MyApp.AppDir/usr/bin/myapp
如果是脚本:
cp run.sh MyApp.AppDir/usr/bin/myapp
nano MyApp.AppDir/AppRun
内容示例:
#!/bin/bash
HERE="$(dirname "$(readlink -f "${0}")")"
exec "$HERE/usr/bin/myapp" "$@"
赋予执行权限:
chmod +x MyApp.AppDir/AppRun
nano MyApp.AppDir/myapp.desktop
[Desktop Entry]
Name=MyApp
Exec=AppRun
Icon=myapp
Type=Application
Categories=Utility;
cp myapp.png MyApp.AppDir/
appimagetool 打包wget https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage
chmod +x appimagetool-x86_64.AppImage
./appimagetool-x86_64.AppImage MyApp.AppDir
成功后会生成:
MyApp-x86_64.AppImage
chmod +x MyApp-x86_64.AppImage
./MyApp-x86_64.AppImage
✅ 如果程序能跑,说明制作成功。
.so 放进 AppDir/usr/lib| 问题 | 原因 |
|---|---|
| libc.so.6 版本错误 | 编译环境太新 |
| 缺少 libstdc++.so | 没打包依赖 |
| 无法启动 | AppRun 路径错误 |
linuxdeploy(强烈推荐)wget https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage
chmod +x linuxdeploy-x86_64.AppImage
./linuxdeploy-x86_64.AppImage \
--executable myapp \
--desktop-file myapp.desktop \
--icon-file myapp.png \
--output appimage
✅ 自动处理依赖、desktop、AppRun
| 程序类型 | 是否适合 |
|---|---|
| 二进制程序 | ✅ |
| Python / Shell 脚本 | ✅ |
| Qt / GTK GUI | ✅ |
| 内核模块 | ❌ |
| systemd 服务 | ❌ |
✅ 只要满足 glibc 兼容性
❌ 不需要,直接运行
✅ 可配合
AppImageUpdate
如果你愿意,我也可以:
直接告诉我你是 什么程序(语言 / 框架 / 编译方式)即可。