如何配置Xcode 9.4仅为Mac OSX编译32位程序?
解决macOS Xcode 9.4调试32位项目的问题
先揪出Xcode配置的隐藏问题
- 别直接删Valid Architectures里的x86_64,先把Architectures设为
$(ARCHS_STANDARD_32_BIT),再把Valid Architectures改成i386。直接删x86_64导致崩溃是Xcode 9.4在Mojave上的兼容性bug,先选标准32位架构再限制有效架构能躲开这个坑。 - 去Other Linker Flags里看看有没有硬加的
-arch x86_64参数,有的话删掉换成-arch i386。 - 一定要同时检查Target和Project两级的Build Settings,很多人只改了Target的配置,Project级还是默认64位,结果冲突掉了。
搞定库文件的链接问题
- 在Build Phases的Link Binary With Libraries里,把自动引入的64位库删掉,手动加你的32位库文件(.a或.dylib)。
- 也可以直接在Other Linker Flags里强制指定架构和库路径,比如写
-arch i386 -L/你的32位库目录 -l你的库名,确保链接器只找32位版本。
要不要换Xcode版本?
如果上面的方法都试过还是崩溃或者链接失败,确实得换更旧的Xcode:
- Xcode 8.3.3是最后一个在Mojave上能稳定运行、对32位支持更完善的版本。安装后记得在
Xcode > Preferences > Locations里把Command Line Tools切换到Xcode 8.3.3。 - 要是Mojave装Xcode 8有麻烦,不如降级到High Sierra系统,搭配Xcode 9.x或8.x,32位项目的调试支持会更靠谱。
临时调试替代方案
暂时不想换系统或Xcode的话,用终端编译好程序后,直接用lldb调试:
lldb ./你的32位可执行文件
lldb里设置断点、运行调试的功能和Xcode差不多,就是没图形界面而已。
内容的提问来源于stack exchange,提问作者acmehax
相关产品推荐
相关产品推荐

