linux x86_64中打包qt
下载安装
地址: Releases · linuxdeploy/linuxdeploy
mv linuxdeploy-x86_64.AppImage linuxdeployqtchmod 777 linuxdeployqtsudo mv linuxdeployqt /usr/local/bin/linuxdeployqt --version
报错
Applmage默认依赖FUSE,需要挂载自身为虚拟文件系统才能运行, ubuntu24.04没有预装,手动安装
sudo apt update -y
sudo apt install libfuse2
输出版本信息安装成功
准备qt可执行文件
新建package文件夹准备打包, 将可执行文件复制进来,笔者这里就直接在build目录同级创建了
mkdir package && cd packagecp ../build/simulation_client .ldd simulation_client
笔者打包是要用到两个工具,就直接手动下载了
runtime-x86_64和appimagetool
Releases · AppImage/AppImageKit
Releases · AppImage/AppImageKit
打包脚本
#!/bin/bash
set -eAPP_NAME="simulation_client"
EXECUTABLE="./$APP_NAME"
ICON_FILE="./simulation.png"
ICON_NAME="simulation"
DESKTOP_FILE="$APP_NAME.desktop"
APPDIR="$APP_NAME.AppDir"
RUNTIME_FILE="./runtime-x86_64"
APPIMAGETOOL="./appimagetool"# 检查可执行文件是否存在
if [ ! -f "$EXECUTABLE" ]; thenecho "错误:可执行文件 $EXECUTABLE 不存在"exit 1
fi# 检查图标文件是否存在
if [ ! -f "$ICON_FILE" ]; thenecho "错误:图标文件 $ICON_FILE 不存在"exit 1
fi# 检查 appimagetool 是否存在
if [ ! -f "$APPIMAGETOOL" ]; thenecho "错误:appimagetool 不存在,请手动下载并放在当前目录"echo "下载地址:https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage"exit 1
fi# 检查 runtime 是否存在
if [ ! -f "$RUNTIME_FILE" ]; thenecho "错误:runtime-x86_64 不存在,请手动下载并放在当前目录"echo "下载地址:https://github.com/AppImage/type2-runtime/releases/download/continuous/runtime-x86_64"exit 1
fi# 设置可执行权限
chmod +x "$EXECUTABLE"
chmod +x "$APPIMAGETOOL"# 生成桌面文件
cat > "$DESKTOP_FILE" << EOF
[Desktop Entry]
Type=Application
Name=Simulation Client
Exec=$APP_NAME
Icon=$ICON_NAME
Categories=Utility;
Terminal=false
Comment=Simulation Client Application
EOFecho "桌面文件已生成: $DESKTOP_FILE"# 清理旧的 AppDir
rm -rf "$APPDIR"# 使用 linuxdeployqt 部署依赖、桌面文件和图标
linuxdeployqt \--appdir="$APPDIR" \-e "$EXECUTABLE" \-d "$DESKTOP_FILE" \-i "$ICON_FILE"# 复制图标到多个标准尺寸目录
SIZES=("16x16" "32x32" "64x64" "128x128" "256x256")
for size in "${SIZES[@]}"; domkdir -p "$APPDIR/usr/share/icons/hicolor/$size/apps"cp "$ICON_FILE" "$APPDIR/usr/share/icons/hicolor/$size/apps/${ICON_NAME}.png"
done
echo "图标已复制到多个标准尺寸目录"# 生成 AppImage,指定输出文件名
echo "正在使用本地工具生成 AppImage..."
"$APPIMAGETOOL" \--runtime-file "$RUNTIME_FILE" \"$APPDIR" \"simulation_client.AppImage"# 自动清理中间文件
echo "正在清理中间文件..."
rm -rf "$APPDIR"
rm -f "$DESKTOP_FILE"echo "清理完成..."ls -l simulation_client.AppImage
常用的Categories分类:
Utility; - 实用工具
Development; - 开发工具
System; - 系统工具
Network; - 网络应用
Graphics; - 图形应用
Office; - 办公软件