因為在轉換資料到新買的MBA上時,誤以為OSX內附的資料轉移程式有確實地把所有的資料備份上去,而把原本的硬碟格式化重灌,直到格式化完畢之後才發現這殘酷的事實……orz
就連我的octopress資料夾也跟著消失了,所以只好重新設定一個新的blog。
先前的環境中,我是用Homebrew所編出來的MRI ruby 1.9.2,但是發現在某些kog中,Homebrew用到了不相容於1.9.2的語法(實際上Homebrew本來就有提醒使用者,目前的版本只會相容於1.8.7),懶得手動切換的我,決定安裝rvm。
其實一開始我也是用rvm,只是不知道為什麼後來改用Homebrew的ruby,只依稀記得似乎是安裝gems時的問題…… 而現在又被我遇到了。
在clone完octopuses的repo之後,下了bundle install的指令來安裝所需的gems,結果出現了這樣的錯誤訊息:
1 | Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension. |
既然提示都說了,那就檢查看看mkmf.log裡寫了什麼:
1 | "/usr/bin/gcc-4.2 -o conftest -I/Users/brucehsu/.rvm/rubies/ruby-1.9.2-p290/include/ruby-1.9.1/x86_64-darwin11.2.0 -I......." |
在搜尋之後,終於找到問題所在,如果你遇到這個問題,你可以用以下的指令察看目前所用ruby版本預設的gcc路徑
1 | ruby -rrbconfig -e 'puts Config::CONFIG["CC"]' |
出來的結果應該會如同上面的錯誤訊息一樣是/usr/bin/gcc-4.2
而在列出/usr/bin底下的檔案之後,你應該會發現,裡面沒有gcc-4.2這個檔案!(如果你也是用Xcode 4.2的話)
既然找到問題,那解決辦法就很簡單了,只要將作個gcc-4.2的symbolic link到llvm-gcc-4.2就行了。
1 | sudo ln -s llvm-gcc-4.2 gcc-4.2 |