即使在macOS 10.14上安装了Xcode并安装了命令行工具并接受了许可证,对于Xcode 11来说,这种情况仍可能发生。
sudo xcode-select --install
sudo xcodebuild -license accept
问题在于Xcode 11中发布的macOS 10.15 SDK包含ruby2.6的头文件,但不包括macOS 10.14的ruby2.3。您可以通过运行以下命令来验证这是您的问题:
ruby -rrbconfig -e 'puts RbConfig::CONFIG["rubyhdrdir"]'
在 macOS 10.14 带有 Xcode 11 的情况下打印不存在的路径
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/include/ruby-2.3.0
然而,Xcode 11会在 /Library/Developer/CommandLineTools/SDKs/MacOS10.14.sdk
中安装一个macOS 10.14 SDK。不需要像其他答案建议的那样污染系统目录以安装旧的头文件。相反,通过选择该SDK,将找到适当的ruby2.3头文件:
sudo xcode-select --switch /Library/Developer/CommandLineTools
ruby -rrbconfig -e 'puts RbConfig::CONFIG["rubyhdrdir"]'
现在应该可以正确打印
/Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/include/ruby-2.3.0
同样,当选择了该SDK时,gem install
应该能够正常工作。
要切换回使用当前的Xcode 11 SDK,请使用
sudo xcode-select --switch /Applications/Xcode.app
sudo xcode-select --install
命令后,提示我已安装了命令行工具。我还尝试从开发者下载页面手动下载 Xcode 11 命令行工具,但仍然出现错误mkmf.rb 找不到位于 /System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/lib/ruby/include/ruby.h 的 Ruby 头文件。
- jdelaune