Xcode 11無法成功安裝Cocoapods的原因和解決方案: mkmf.rb can't find header files for ruby at xxx

錯誤信息

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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章