快速解决方案:执行以下命令: 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
我在谷歌中搜索了这些字符串之一,并提出了隐藏在苹果开发者论坛上的以下解决方案:
“似乎旧的 xcodebuild 命令被新的 Xcode 安装程序留下了。执行‘xcode-select -switch /Applications/Xcode.app/Contents/Developer/’和‘make clean’后,项目完美构建。”
确实,现在可以了。一定是一些奇怪的不正确的符号链接。许多其他人似乎都遇到了 opendirectoryd 的问题以及导致 CPU 大幅上升的损坏的符号链接。