快速解决方案:执行以下命令:xcode-select -switch /Applications/Xcode.app/Contents/Developer/
我是如何找到解决方案的:
打开 opendirectoryd 调试日志:“odutil set log debug”
在 /var/logs/opendirectoryd.log 文件中搜索。
我不断看到这块日志一遍又一遍地发送垃圾邮件:
2012-04-12 11:29:28.420 CDT - 31053.1185984,模块:SystemCache - 用于更多工作的信号量
2012-04-12 11:29:28.420 CDT - 31053.1185984,模块:SystemCache - 完成响应对象 0x7fae5b21acb0,请求完成
2012-04-12 11:29:28.420 CDT - 31053 - 客户端:“xcodebuild”,以 0 个会话、0 个节点和 0 个活动请求退出
2012-04-12 11:29:28.421 CDT - 触发器 - 新节点触发器监视 'opendirectoryd:nodes;(register|unregister);.*'
2012-04-12 11:29:28.421 CDT - semaphore_wait 将等待 - 会员呼叫的最大数量已经在飞行中
2012-04-12 11:29:28.421 CDT - 31053.1185985,模块:SystemCache - 客户端:xcodebuild,UID:501,EUID:501,GID:20,EGID:20
2012-04-12 11:29:28.421 CDT - 31053.1185985,模块:SystemCache - 添加到全局请求列表 - 新计数 1
2012-04-12 11:29:28.421 CDT - 31053.1185985,模块:SystemCache - mbr_identifier_to_uuid 请求,UID:501
2012-04-12 11:29:28.421 CDT - 31053.1185985,模块:SystemCache - semaphore_wait 将等待 - max_active_work
2012-04-12 11:29:28.421 CDT - 31053.1185985,模块:SystemCache - semaphore_wait 将等待 - workq
2012-04-12 11:29:28.421 CDT - 31053.1185985,模块:SystemCache - 提交到管道
2012-04-12 11:29:28.421 CDT - 31053.1185985,模块:SystemCache - 执行请求管道
2012-04-12 11:29:28.421 CDT - 31053.1185985,模块:SystemCache - 缓存命中 - dev14 (0x59574CC0)
2012-04-12 11:29:28.421 CDT - 31053.1185985,模块:SystemCache - 提交到响应管道
2012-04-12 11:29:28.421 CDT - 31053.1185985,模块:SystemCache - 执行响应管道 - 0x10ba2f670
2012-04-12 11:29:28.421 CDT - 31053.1185985,模块:SystemCache - mbr_identifier_to_uuid 完成,交付 1 个结果
2012-04-12 11:29:28.421 CDT - 31053.1185985,模块:SystemCache - 从全局请求列表中删除
2012-04-12 11:29:28.421 CDT - 31053.1185985,模块:SystemCache - 用于更多工作的信号量
2012-04-12 11:29:28.421 CDT - 31053.1185985,模块:SystemCache - 完成响应对象 0x10ba2f670,请求完成
2012-04-12 11:29:28.421 CDT - 31053 - 客户端:“xcodebuild”,以 0 个会话、0 个节点和 0 个活动请求退出
2012-04-12 11:29:28.422 CDT - 触发器 - 新节点触发器监视 'opendirectoryd:nodes;(register|unregister);.*'
2012-04-12 11:29:28.422 CDT - semaphore_wait 将等待 - 会员呼叫的最大数量已经在飞行中
2012-04-12 11:29:28.422 CDT - 31053.1185986,模块:SystemCache - 客户端:xcodebuild,UID:501,EUID:501,GID:20,EGID:20
2012-04-12 11:29:28.422 CDT - 31053.1185986,模块:SystemCache - 添加到全局请求列表 - 新计数 1
2012-04-12 11:29:28.422 CDT - 31053.1185986,模块:SystemCache - mbr_identifier_to_uuid 请求,UID:501
2012-04-12 11:29:28.422 CDT - 31053.1185986,模块:SystemCache - semaphore_wait 将等待 - max_active_work
2012-04-12 11:29:28.422 CDT - 31053.1185986,模块:SystemCache - semaphore_wait 将等待 - workq
我在 google 中搜索了这些字符串之一,并在苹果的开发者论坛上找到了以下隐藏的解决方案:
“似乎旧的 xcodebuild 命令被新的 Xcode 安装程序留下了。在执行 'xcode-select -switch /Applications/Xcode.app/Contents/Developer/' 和 'make clean' 后,项目完美构建。”
确实,它现在有效。一定是一些不正确的奇怪符号链接。许多其他人似乎对 opendirectoryd 和损坏的符号链接有问题,导致 CPU 大幅飙升。