読者です 読者をやめる 読者になる 読者になる

Homebrewで最新のGCC ( gcc-4.6.2 ) をインストールするためのパッチを書いてみた

C++ Mac

最近Macのパッケージ管理システムを色々使ってみていて,その一環でHomebrewを使ってみたりなどしました.
Homebrewにはgccのパッケージが見当たらなかったので検索してみたところ,
homebrew-altというリポジトリに比較的新しめのgcc-4.6.0のFormulaがありました.
404 · GitHub

まあしかし,最新版のgccを追っていってる人はそれなりにご存知だとは思いますが,gcc-4.6.0はバグとか色々アレなので,どうせならつい先日出た4.6.2をインストールしたいということで,上記のファイルをgcc-4.6.2に対応させるパッチを書きました.
https://github.com/rhysd/others/blob/master/gcc4.6.0-to-gcc4.6.2.patch

使い方は上記のサイトからそれぞれgcc.rbとgcc4.6.0-to-gcc4.6.2.patchを落としてきて同じディレクトリに入れ,そのディレクトリ内で

% patch < gcc4.6.0-to-gcc4.6.2.patch
% brew install ./gcc.rb --enable-cxx --enable-objc

という感じです.--enable-cxxと--enable-objcは飽くまで例です.



しかし,自分の環境ではこれではインストール出来ませんでした.
出たエラーはこんな感じです.

configure: error: cannot compute suffix of object files: cannot compile
See `config.log' for more details.


単純にライブラリのインストール先が見つからないのかなーと思い,config.logを見てみてもいまいち分かリませんでした.ぐぐってみると,私の書いたパッチではなく,元のgcc.rbでも無く,はたまたllvm-gccですら無く,Appleが開発しているgccのバックエンドとして採用しているllvmのバグのようです.
Bug 9571 – llvm-gcc unable to bootstrap FSF gcc 4.6.0

解決方法としては

  • Appleから配布されているllvm-gccを使わず,別のgccを使う
  • 上記ページに挙げられているパッチを当ててllvm-gccを再ビルドしてそれを使う


のどちらかを行うと無事インストールできるようです.

ただ,自分はHomebrewをメインに使おうとは思っていない(Gentoo/Prefixでgcc4.6.2入る)ので,そこまでは踏み込みませんでしたが,Homebrewを使っていて最新のGCCを使いたいという方は試してみる価値があるんじゃないでしょうか.

※環境:MacOSX 10.7.2,llvm-gcc-4.2.1

追記
Gentoo/Prefixで作成したapple-gcc-4.2.1のバイナリを一応置いておきます.
これを用いての4.6.2のビルドはできているので,これを元から入っているllvm-gccの代わりに用いるとビルドできるかもしれません.
もちろん責任は持てないので自己判断で使ってください.

gcc: http://dl.dropbox.com/u/2753138/gcc
g++: http://dl.dropbox.com/u/2753138/g%2B%2B

(2011 mid のMacBook Air でビルド)

さらに追記(11/11/15)
XCode 4.2で付属のgccがbuild 5666にアップグレードされるらしく,XCode 4.2であればめでたくgcc-4.6.2のビルドが通りました.(--enable-cxxのみしか確認していませんが)