Homebrew経由でGCCをインストールするにはどうすればいいですか?


79

Homebrewのみを使用しています(つまり、MacPortsやFinkは使用していませんし、使用しません)。また、手動インストールを最小限に抑えたいです。1

…しかし、どうすればGCCをインストールできますか?

まず第一に、もちろんXcodeをインストールしましたが、現在のバージョンにはきちんと最新のGCCが付属していません(少なくとも4.5が必要ですが、最新のものを優先します)。実際、出荷されません適切なGCCを使用して(Clangのみを出荷)、Homebrewにとっては問題のようです…

私はカスタムGCCとクロスコンパイラのリストを知っていますが、実際、それらのインストールにはすべて、既にインストールされているGCCが必要です。少なくとも、brewLangのリンカエラーで失敗し、Clangに起因し-use-gcc、明らかに動作しません理由。

brew doctor GCC(4.2.x)がインストールされていないということは、私がすでに知っていることだけに言及しています。


1私は以前にMacPorts、Homebrew、およびいくつかの手動インストールを混合しましたが、メンテナンスとバージョン管理の地獄で終わりました。二度と行きたくありません。


の出力はgcc --version何ですか?取得 i686-apple-darwin11-llvm-gcc-4.2 (GCC) 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2335.15.00)し、MASからXcodeをインストールしました。また、出力はecho $PATH何ですか?
ジオ

@Gio同じ出力が得られました。$PATH普通です(これは、ほとんど空白のシステム/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/binです)。homebrew-altによって提供される式は単純に時代遅れであり、Clangでは機能しません。
コンラッドルドルフ

1
Homebrewを使用する理由 MacPortsは、複数バージョンのコンパイラーの管理が得意です。そして、MacPortsはHomebrewでできることなら何でもできます。
ジェフバード14年

@JeffBurdges Homebrewの方が優れています。ほぼすべてのカテゴリ。
コンラッドルドルフ14年

2
どうして?正直に言うと、Homebrewには(a)パッケージの説明と(b)数学パッケージが欠けているという理由だけで、Homebrewが嫌いです。全体的なMacPortsにはHomebrewの6倍のパッケージがありますが、紛失したのはあいまいなパッケージです。明らかに私は、彼らがなどCPAN、CTAN、Caball、のような言語パッケージマネージャと統合したい希望が、私は、全体のMacPortsを持つ幸せ
ジェフBurdges

回答:


30

@Konrad Rudolphによって提供されたソリューションは、彼が言及したGCCの公式がからに移動したhomebrew/dupesため、完全に正確ではなくなりましたhomebrew/versions。インストールするGCCのバージョンを選択できます。たとえば、この回答を書いている時点では、バージョン4.5、4.7、および4.8が利用可能です。ここで利用可能なバージョンを確認できます

要するに、次を使用してGCC 4.8をインストールできます。

brew tap homebrew/versions
brew install [flags] gcc48

次を使用して、使用可能なインストールフラグを表示できます。

brew options gcc48

私はこれを試してみましたが、私はそれをインストールするようになったが、それは次のように死ぬ:gcc-4.8 hello.c gcc-4.8: error trying to exec 'as': execvp: No such file or directory
ウォーレンP

@WarrenP anyでインストールしましたか[flags]?私のマシンでは、フラグなしでインストールしましたが、正常に動作します。gcc-4.8入力ファイルなしで呼び出して、致命的なエラーが発生するかどうかを確認してみませんか?またls /usr/local/Cellar/gcc48/4.8.0/bin、そのディレクトリにが含まれてgcc-4.8いるかどうかを確認してください。
イハンホ

これにはgcc-4.8が含まれており、gcc-4.8 --version実行されますが、指定されたセカンダリツールに実行できないasため、終了します。
ウォーレンP

うーん...率直に言って、私はこれを解決する方法がわかりません。経験豊富なユーザーを待たなければならないかもしれません
...-yihangho

2
@nkintまたはそれを追加alias g++='g++-4.8'します.bashrc
イハンホ

38

自作ソリューション

私自身の質問に答えるために、GCCのhomebrew-versionsかなり最新の公式を用意しました。を使用してインストールできます

brew install [flags] https://raw.github.com/Homebrew/homebrew-versions/gcc48.rb

どこに[flags]必要なすべての言語を含める必要がありますか(例:(--enable-cxx --enable-fortran))。

これにより、サフィックス付きの実行可能ファイルがインストールgccされますgcc-version。つまり、衝突を避けるためにアクセスする必要があります。必要に応じて、適切なシンボリックリンクを作成して、このバージョンをデフォルトにすることができます。

手動インストール

または、次のシェルスクリプトを使用して、最新のGCC(執筆時点)を手動でコンパイルできます。

VERSION=4.7.0
PREFIX=/usr/gcc-$(VERSION)
LANGUAGES=c,c++,fortran
MAKE=make
# Or
# MAKE='make -j 4' # to compile using four cores

brew-path() { brew info $1 | head -n3 | tail -n1 | cut -d' ' -f1; }

# Prerequisites

brew install gmp
brew install mpfr
brew install libmpc

# Download & install the latest GCC

mkdir -p $PREFIX
mkdir temp-gcc
cd temp-gcc
wget ftp://ftp.gnu.org/gnu/gcc/gcc-$VERSION/gcc-$VERSION.tar.gz
tar xfz gcc-$VERSION.tar.gz
rm gcc-$VERSION.tar.gz
cd gcc-$VERSION

mkdir build
cd build

../configure \
   --prefix=$PREFIX \
   --with-gmp=$(brew-path gmp) \
   --with-mpfr=$(brew-path mpfr) \
   --with-mpc=$(brew-path libmpc) \
   --program-suffix=-$VERSION \
   --enable-languages=$LANGUAGES \
   --with-system-zlib \
   --enable-stage1-checking \
   --enable-plugin \
   --enable-lto \
   --disable-multilib

$MAKE bootstrap

make install

# Uncomment for cleanup …
# cd ../../..
# rm -r temp-gcc

これはGCCをパスにステージングします/usr/gcc-4.7.0。あとは、実行可能ファイルへのシンボリックリンクを作成するか、binディレクトリを$PATH変数に追加するだけです。


1
作業バージョンのwineをコンパイルしようとすると、gccが見つからないという問題も発生しました。残念ながら、homebrewを使用してv4.7をインストールするとエラーが発生しました。だから私はApple v4.2を使って、brew tap homebrew/dupes続いてbrew install apple-gcc42。これは私が働くgccとワインを手に入れるのに役立ちました。(homebrewのように)バイナリもここから入手できます:r.research.att.com/tools
iolsmit

@iolsmitクリーンで最新のHomebrewを使用して、GCC 4.7のインストールを必ず再試行してください。それは魅力のように動作するはずです。そうでない場合は、Homebrew-dupesメンテナーにバグを報告してください。
コンラッドルドルフ

3
brew tap homebrew/dupes; brew install gcc --use-llvm。参照してくださいgithub.com/Homebrew/homebrew-dupes/issues/20
PHS

@KonradRudolphどこでも私はあなたが私が尋ねている質問に答えていると言っています!ありがとう:)
リック・スミス-ウンナ

1
@Warren叫ぶ必要はありませんが、リハンダーに感謝します。yihangが実際に私が受け入れたより良い最新の回答を投稿したからです。
コンラッドルドルフ

13

今日、誰かがこの古い投稿にリンクしているのを見ました。GCCをhomebrewにインストールする最良の方法はただbrew install gccです。XCodeコマンドラインツール(XCodeとは別です。でインストールできます)がインストールxcode-select --installされている場合、プリコンパイルバージョンがインストールされます(非常に高速です)。


3

私もこの問題を抱えていました。さらに、gfortranを使用する必要があります。gfortranには、Macのllvm-gccの標準(古い)インストールが付属していません。

gccのHigh Performance Computingビルドが最新であり、Lionでうまく機能することがわかりました。


これを試してみました。うまくいかなかっただけでなく、彼が使用しているインストール技術はかなり危険です。すべてを慎重に元に戻すために約1時間かかりました。
ボブ・アマン

2
ああ、私は彼が提案するようにそれをインストールしないと言ったはずです。ファイルを展開し、必要なバイナリへのシンボリックリンクを作成し、シンボリックリンクがPATHのどこかにあることを確認します。通常、これは、パスに〜/ bin /などの「ローカル」なものを追加することで行われます。
cm2

ええ、それはもっと正気でしょう。彼のインストール手順はおかしくなりがちなので、盲目的にやるのではなく、同じくらいに想定すべきだった。
ボブ・アマン

3

誰かがこの古いスレッドを見た場合、現在受け入れられている答えで使用されているhomebrew / versionsは、homebrew / coreを支持して廃止されたようです。実行するだけです。brew install <formula>


Homebrew経由でGCCをインストールする方法であるOPの質問とこれがどのように関係するのか説明していただけますか?
fsb

@fsb回答が更新されました。
アヴィ

これは、受け入れられた回答に関するコメントです。OPの質問に対応していないため、回答そのものではありません。十分な評判たら、コメントを追加、フォローアップの質問をすることができます。評判を得るには、明確で簡潔な質問答えてください
fsb

これが変更されるbrewのバージョンを指定するために、新しい質問をする必要がありますか?この古い投稿を修正することは、利益が低く、遅延が大きいようです。
bmike

十分な評判ポイントがあれば、代わりに受け入れられた解決策についてコメントしたでしょう。あなた自身でそれをしてください。
アビ

0

これを試すかもしれません-https://github.com/kennethreitz/osx-gcc-installer-Lionにアップグレードした後、Homebrewなど(Ruby)でパッケージをコンパイルするのに成功しました。

私から読む:

OSX GCCインストーラー GCCと関連ツールだけが必要な場合、大規模なXcode インストーラーのダウンロードとインストールは非常に面倒です。

osx-gcc-installerを使用すると、ビルド済みのバイナリパッケージから重要なコンパイラをインストールしたり、独自のインストーラーを作成したりできます。


これは、Xcodeによってもインストールされたバージョンのみをインストールします。つまり、時代遅れであり、実際にはGCCではなくLLVM-GCCです。
コンラッドルドルフ

1
古い:はい。パッケージのポイントは、Xcodeに同梱されているユーティリティですが、Xcodeに必要な他のすべての巨大なコンポーネントがないことです。GNU GCCではありません:間違っています。/usr/bin/gccはllvm gccへのシンボリックリンクですが、.bash_profileまたは適切なファイルへの明示的な参照/usr/bin/gcc-4.2または設定export CC="gcc-4.2"も問題を軽減します。(このスタックオーバーフローの質問も参照してください。)
ジェイソンサラズ

2
このプロジェクトはXcodeのためにAppleの公式のコマンドラインツールに取って代わられていることに注意してください:kennethreitz.org/essays/xcode-gcc-and-homebrew
のArto Bendiken
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.