在2009年我曾經在Linux上頭編譯GCC,因為GCC的授權在4.2.1版之後由GPL v2改為GPL v3,Apple就不再更新GCC。幾年下來造成編譯器版本過舊,蘋果自己也開始打造自己的clang:基於LLVM的compiler;所以現在OS X上有clang和llvm-gcc兩個編譯器,都是LLVM compiler。
但目前來說,GCC相容性仍然是比較好,而且支援很多新的語言特性。像是Ruby的RVM目前就不支援 LLVM 編譯1.9.3之前的版本,只能用GCC。但很不幸地,目前Mac上很方便的套件工具 Homebrew 並不能直接安裝 GCC ,要用別的方式,詳見 此。
連MPC都沒有更新編不過,我不相信GCC會沒問題,所以就自力救濟,我的做法如下:
編譯GCC要幾個小時,安裝完成後自己再建立link到 /usr/local就行了
但目前來說,GCC相容性仍然是比較好,而且支援很多新的語言特性。像是Ruby的RVM目前就不支援 LLVM 編譯1.9.3之前的版本,只能用GCC。但很不幸地,目前Mac上很方便的套件工具 Homebrew 並不能直接安裝 GCC ,要用別的方式,詳見 此。
brew install https://raw.github.com/Homebrew/homebrew-dupes/master/gcc.rb
連MPC都沒有更新編不過,我不相信GCC會沒問題,所以就自力救濟,我的做法如下:
- 編譯GCC需要的GMP、MPFR和MPC:
brew install gmp mpfr
如果沒有裝wget的朋友,建議也順便裝一下,指令比curl方便
brew install wget - 因為Homebrew的的 MPC版本過舊,直接安裝會失敗,得自己裝。
wget http://www.multiprecision.org/mpc/download/mpc-0.9.tar.gz
tar xzf mpc-0.9.tar.gz
cd mpc-0.9
./configure && make && sudo make install - 編譯GCC
wget http://ftp.twaren.net/Unix/GNU/gnu/gcc/gcc-4.7.0/gcc-4.7.0.tar.gz
tar xzf gcc-4.7.0.tar.gz
mkdir gccbuild && cd gccbuild
../gcc-4.7.0/configure --prefix=/usr/local/gcc #為了避免干擾現有的gcc
make DESTDIR=/usr/local/gcc BOOT_CFLAGS='-O' bootstrap
sudo make install
編譯GCC要幾個小時,安裝完成後自己再建立link到 /usr/local就行了
sudo ln -s /usr/local/gcc/bin/gcc /usr/local/bin/gcc-4.7或是設定路徑
sudo ln -s /usr/local/gcc/bin/g++ /usr/local/bin/g++-4.7
export PATH=/usr/local/gcc/bin:$PATH如果是多人使用的"測試"伺服器,你也可以像rvm一樣裝在自己的目錄下,不過現在很少人用Mac Server,而且會裝GCC的朋友應該也是管理員等級了吧XD
留言
因為我是想要學習一些 C++11 裡的新功能,才會想要這樣弄,不想在 compiler 版本上混淆了。謝謝您提供的資料,也請您提示一下我的問題如何處理囉!多謝!