温馨提示×

centos如何制作appimage

小樊
43
2026-09-15 01:22:56
栏目: 智能运维

在 CentOS 上制作 AppImage 一般分为以下几步:准备运行环境、打包依赖、编写 .desktop、使用 linuxdeploy 或 appimagetool 生成 AppImage。下面给你一个通用且可行的流程(以 CentOS 7/8 为例)。


一、准备工作

1. 安装基础工具

sudo yum install -y gcc-c++ cmake git fuse

2. 安装 AppImage 工具

推荐使用 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/

1. 复制可执行文件

mkdir -p myapp.AppDir/usr/bin
cp myapp myapp.AppDir/usr/bin/

2. 编写 AppRun

cat > myapp.AppDir/AppRun <<'EOF'
#!/bin/bash
HERE="$(dirname "$(readlink -f "${0}")")"
exec "$HERE/usr/bin/myapp" "$@"
EOF
chmod +x myapp.AppDir/AppRun

3. 编写 .desktop 文件

[Desktop Entry]
Name=MyApp
Exec=myapp
Icon=myapp
Type=Application
Categories=Utility;

4. 添加图标

cp myapp.png myapp.AppDir/

三、收集依赖库(关键)

方法 1:linuxdeploy 自动处理

./linuxdeploy-x86_64.AppImage \
  --appdir myapp.AppDir \
  --output appimage

它会自动:

  • 分析 usr/bin/myapp
  • 拷贝 .so 依赖
  • 生成 myapp-x86_64.AppImage

✅ 最简单,推荐


方法 2:手动 ldd(不推荐但可控)

ldd myapp | grep "=> /" | awk '{print $3}' | xargs -I{} cp {} myapp.AppDir/usr/lib/

四、生成 AppImage

如果没用 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

六、CentOS 注意事项

  1. CentOS 7 兼容性最好
    • glibc 较老,生成的 AppImage 在新系统也能跑
  2. 避免在 CentOS 9 / Stream 打包
    • glibc 太新,老系统跑不了
  3. 如果是 Qt / GTK 程序:
    • 使用 linuxdeploy-plugin-qt
  4. FUSE 问题:
    sudo yum install fuse
    

七、示例命令汇总

./linuxdeploy-x86_64.AppImage \
  --appdir myapp.AppDir \
  --desktop-file myapp.desktop \
  --icon-file myapp.png \
  --output appimage

如果你愿意,可以告诉我:

  • ✅ 是 C/C++ / Python / Java / Qt?
  • ✅ CentOS 版本(7 / 8 / Stream)?
  • ✅ 是否有 GUI?

我可以直接给你针对你项目的 AppImage 打包模板。

0 踩