macOS执行bundle install时em-udns 0.3.6.2安装失败如何解决
报错原因
macOS 10.14及以上版本中,Xcode命令行工具将socket相关的基础系统库从传统/usr/lib路径迁移到了Xcode内置SDK目录,em-udns 0.3.6.2自带的udns编译配置脚本未适配该路径变更,编译阶段找不到socket依赖就会终止安装。
修复步骤
- 先确认本机已安装Xcode命令行工具,未安装的话执行以下命令,按弹窗引导完成安装即可:
xcode-select --install
- 从日志路径判断你使用rbenv管理Ruby版本,直接执行以下命令单独安装编译失败的em-udns gem,自动适配Xcode SDK路径,同时跳过新版本Clang对隐式函数声明的编译拦截:
gem install em-udns -v '0.3.6.2' -- --with-cflags="-Wno-error=implicit-function-declaration"
- 如果上述命令执行后依然提示找不到socket库,手动指定编译阶段的系统SDK路径后重新安装即可:
gem install em-udns -v '0.3.6.2' -- --with-cflags="-isysroot $(xcrun --show-sdk-path) -Wno-error=implicit-function-declaration" --with-ldflags="-isysroot $(xcrun --show-sdk-path)"
- 确认em-udns gem安装成功无报错后,回到项目目录重新执行
bundle install就能正常完成全量依赖安装。
内容的提问来源于stack exchange,提问作者Hakob Sargsyan
相关产品推荐
相关产品推荐

