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

升级OSX High Sierra与Xcode9.2后大项目编译耗时激增原因问询

关于Xcode 9.2 + High Sierra编译时长暴增、xcexec频繁调用close的问题分析

我当时在升级到High Sierra和Xcode 9.2后也碰到过几乎一模一样的问题,折腾了好一阵才搞清楚根源,主要有这几个可能的成因:

  • APFS文件系统兼容性bug:High Sierra是苹果首次默认采用APFS的系统版本,而Xcode 9.2对APFS的文件描述符管理存在适配问题。xcexec作为编译工具的包装器,在处理大量编译文件时,会频繁打开和关闭文件描述符,但APFS在处理这类高频操作时存在效率瓶颈,导致close系统调用次数异常飙升,占用大量CPU资源拖慢编译。

  • Xcode 9.2自带的xcexec二进制缺陷:这个版本的xcexec本身存在逻辑错误——作为clang等编译工具的启动包装,它没有正确复用已打开的文件描述符,每次执行子任务都会重复创建并立即关闭描述符,每分钟数百万次的close调用直接把CPU占满,让编译流程彻底卡住。重装Xcode没用也印证了这是版本自带的bug,不是安装损坏导致的。

  • 旧编译缓存的冲突:升级后如果没有彻底清理旧的编译缓存,比如~/Library/Developer/Xcode/DerivedData目录下的旧缓存文件,这些缓存和新Xcode版本不兼容,会导致xcexec在读取或验证缓存时陷入循环操作,不断触发文件打开/关闭的流程。

对应的解决办法可以试试这些:

  1. 升级Xcode到9.3及以上版本:苹果在后续版本中专门修复了xcexec的这个bug,这是最彻底的解决方式;
  2. 彻底清理编译缓存:执行命令rm -rf ~/Library/Developer/Xcode/DerivedData和rm -rf ~/Library/Caches/com.apple.dt.Xcode,然后重启Xcode重新编译;
  3. 临时切换回HFS+文件系统(如果你的存储设备还没格式化为APFS):虽然麻烦,但确实能规避APFS和Xcode 9.2的适配问题;
  4. 关闭增量编译:在Xcode的Build Settings里把Incremental Build设为No,虽然会损失一点增量编译的效率,但能减少xcexec的异常操作次数。

内容的提问来源于stack exchange,提问作者Berik

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 03:18:15