在 CentOS 上制作 AppImage 一般分为以下几步:准备运行环境、打包依赖、编写 .desktop、使用 linuxdeploy 或 appimagetool 生成 AppImage。下面给你一个通用且可行的流程(以 CentOS 7/8 为例)。
sudo yum install -y gcc-c++ cmake git fuse
推荐使用 linuxdeploy(最省事):
wget https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage
chmod +x linuxdeploy-x86_64.AppImage
(可选)插件:
wget https://github.com/linuxdeploy/linuxdeploy-plugin-qt/releases/download/continuous/linuxdeploy-plugin-qt-x86_64.AppImage
chmod +x linuxdeploy-plugin-qt-x86_64.AppImage
假设你的程序叫 myapp:
myapp.AppDir/
├── AppRun
├── myapp.desktop
├── myapp.png
└── usr/
├── bin/
│ └── myapp
└── lib/
mkdir -p myapp.AppDir/usr/bin
cp myapp myapp.AppDir/usr/bin/
cat > myapp.AppDir/AppRun <<'EOF'
#!/bin/bash
HERE="$(dirname "$(readlink -f "${0}")")"
exec "$HERE/usr/bin/myapp" "$@"
EOF
chmod +x myapp.AppDir/AppRun
[Desktop Entry]
Name=MyApp
Exec=myapp
Icon=myapp
Type=Application
Categories=Utility;
cp myapp.png myapp.AppDir/
./linuxdeploy-x86_64.AppImage \
--appdir myapp.AppDir \
--output appimage
它会自动:
usr/bin/myapp.so 依赖myapp-x86_64.AppImage✅ 最简单,推荐
ldd myapp | grep "=> /" | awk '{print $3}' | xargs -I{} cp {} myapp.AppDir/usr/lib/
如果没用 linuxdeploy 自动生成:
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
./myapp-x86_64.AppImage
linuxdeploy-plugin-qtsudo yum install fuse
./linuxdeploy-x86_64.AppImage \
--appdir myapp.AppDir \
--desktop-file myapp.desktop \
--icon-file myapp.png \
--output appimage
如果你愿意,可以告诉我:
我可以直接给你针对你项目的 AppImage 打包模板。