You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Ubuntu 24.04打包依赖Qt 6.5.3+及librtmidi的Qt/QML应用

如何为Ubuntu 24.04打包依赖Qt 6.5.3+及librtmidi的Qt/QML应用

我来帮你搞定这个打包难题!针对Ubuntu 24.04环境下,打包依赖Qt 6.5.3+和librtmidi的Qt/QML应用,咱们可以分步骤处理,解决系统Qt版本不足和第三方依赖打包的问题:

第一步:先搞定Qt 6.5.3+的编译环境

Ubuntu 24.04官方仓库里只有Qt 6.4,所以咱们得自己安装高版本的Qt:

  • 去Qt官方下载安装器,选择安装Qt 6.5.3(或更高版本)以及对应的GCC编译器套件。
  • 确保你的应用全程用这个新安装的Qt版本编译,别和系统自带的Qt混着用,不然打包的时候容易出依赖冲突。

第二步:扩展Qt部署脚本,打包librtmidi

你之前用的Qt官方部署脚本只能处理Qt相关库和QML运行时,咱们手动修改它来加入librtmidi的打包逻辑:

  1. 先运行qt-generate-deploy-qml-app生成初始的部署脚本(比如命名为deploy.sh),它会帮你把Qt核心库、QML模块都整理好。
  2. 找到librtmidi的安装路径:
    • 如果是通过apt安装的,一般在/usr/lib/x86_64-linux-gnu/下,文件名类似librtmidi.so或者带版本后缀的librtmidi.so.6之类。
    • 如果是自己编译安装的,可能在/usr/local/lib或者你指定的自定义路径里。
  3. 在部署脚本里添加复制librtmidi到应用lib目录的命令:
    # 复制librtmidi库到应用的lib文件夹
    cp /usr/lib/x86_64-linux-gnu/librtmidi.so* $APP_DIR/lib/
    
  4. 用patchelf工具修改可执行文件和库的rpath,让它们优先加载打包目录里的库:
    # 修改应用可执行文件的rpath
    patchelf --set-rpath '$ORIGIN/lib' $APP_DIR/你的应用可执行文件名
    # 修改librtmidi的rpath
    patchelf --set-rpath '$ORIGIN' $APP_DIR/lib/librtmidi.so
    

更省心的替代方案:用linuxdeployqt自动打包

如果你不想手动改脚本,试试linuxdeployqt工具,它能自动检测并打包大部分第三方依赖,包括librtmidi:

  1. 安装linuxdeployqt(可以下载预编译版本或者自己编译)。
  2. 运行时指定你的Qt 6.5.3的qmake路径,生成AppImage包:
    linuxdeployqt 你的应用可执行文件名 -qmake /path/to/qt/6.5.3/gcc_64/bin/qmake -appimage
    
    生成的AppImage文件可以直接在Ubuntu 24.04上运行,用户不需要额外安装依赖。

几个要注意的细节

  • 用ldd 你的应用可执行文件名或者ldd /usr/lib/x86_64-linux-gnu/librtmidi.so查看所有依赖,确保没有遗漏的系统库(比如ALSA、JACK相关的库),如果有也要一起打包到lib目录。
  • 打包完成后,一定要在干净的Ubuntu 24.04环境(比如虚拟机、容器)里测试,确保应用能正常运行,没有依赖缺失的问题。

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.08 13:43:06