Ответ на этот вопрос можно найти здесь здесь , хотя он не связан с этим вопросом. Ниже приведен фрагмент ответа, который работает лучше всего.
Для Xcode 11 на macOS 10.14 это может произойти даже после установки Xcode и установки инструментов командной строки и принятия лицензии с
sudo xcode-select --install
sudo xcodebuild -license accept
Проблема в том, что Xcode 11 поставляется с MacOS 10.15 SDK, который включает заголовки для ruby2.6, но не для ruby2.3 в macOS 10.14. Вы можете убедиться, что это ваша проблема, запустив
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 устанавливает macOS 10.14 SDK в /Library/Developer/CommandLineTools/SDKs/MacOS10.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
Аналогично, gem install
должно работать, пока этот SDK
Чтобы вернуться к использованию текущего Xcode 11 SDK, используйте
sudo xcode-select --switch /Applications/Xcode.app