Apple Silicon M1下使用macdeployqt部署arm64架构Qt程序报错如何解决
问题根因
你遇到的报错是Qt 6.2.1版本自带macdeployqt工具的已知适配缺陷:该版本的otool输出解析逻辑没有兼容XCode 13+在Apple Silicon架构下的输出格式,无法识别带(architecture arm64)后缀的依赖路径行,导致解析失败。同时因为你部署的是无GUI的控制台程序,工具默认扫描的GUI类框架也属于多余依赖,进一步放大了报错量。
解决方案
方案1:升级Qt版本(最推荐)
Qt 6.2.2及以上版本已经官方修复了该解析bug,直接升级到6.2.2或更高的LTS版本(如6.5.x、6.7.x),不需要修改任何配置和部署命令即可正常完成arm64架构程序的部署。方案2:指定部署参数(适用于必须保留Qt 6.2.1的场景)
调用macdeployqt时增加-arch arm64和-no-widgets参数,前者强制工具仅处理arm64架构的依赖,绕过多架构输出的解析逻辑,后者跳过GUI类框架的扫描,适配你的无GUI控制台程序场景:
./macdeployqt /Users/vk/build-ConsoleApp-Qt_6_2_1_for_macOS_XCode-Release/ConsoleApp.app -arch arm64 -no-widgets
- 方案3:绕过app bundle部署(仅适用于控制台程序)
如果你不需要生成app bundle格式的程序包,可以在PRO文件中新增CONFIG -= app_bundle配置,qmake编译后会直接生成单二进制可执行文件,后续仅需用otool和install_name_tool手动调整依赖路径即可,不需要使用macdeployqt工具。
内容的提问来源于stack exchange,提问作者HiFile.app - best file manager
相关产品推荐
相关产品推荐

