錯誤信息
mkmf.rb can't find header files for ruby at /System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/lib/ruby/include/ruby.h
我主要是新買的macbook pro,安裝了XCode 11,然後就遇到這個安裝Cocoapods的錯誤,之前從來沒有遇到過
後來經過了各種搜索後,解決思路和辦法如下:
重點
在macOS 10.14
上安裝了Xcode 11
,也需要安裝了Xcode command line tools
$ sudo xcode-select --install
增加了一個接受證書的環節
$ sudo xcodebuild -license accept
這個問題主要是因爲Xcode 11 攜帶了macOS 10.15 SDK,該SDK包含了ruby 2.6的頭文件,但是對macOS 10.14系統的ruby 2.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是安裝在macOS 10.14 SDK上,在此路徑/Library/Developer/CommandLineTools/SDKs/MacOS10.14.sdk
。但是它沒有必要因爲安裝了舊的頭文件而污染了系統目錄。所以我們要改成,指定合適的SDK和ruby 2.3頭文件
$ sudo xcode-select --switch /Library/Developer/CommandLineTools
然後,我們再來看下ruby 2.3的正確路徑
$ 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
就可以正常使用了
現在可以愉快的安裝cocoapods吧
$ gem install cocoapods
安裝完後,檢查下版本
$ pod --version
輸出
1.9.0
最終可以成功的安裝各種庫了~~
注意:
如果想改回之前使用的XCode 11 SDK,就使用此命令
$ sudo xcode-select --switch /Applications/Xcode.app