新しい Rails バージョンのインストール中にエラーが発生しました。Gem ネイティブ拡張機能のビルドに失敗しました

新しい Rails バージョンのインストール中にエラーが発生しました。Gem ネイティブ拡張機能のビルドに失敗しました

私は次のガイドを使用して、初めてのRuby on Railsアプリを構築しようとしています(http://ruby.railstutorial.org/chapters/a-demo-app#code-demo_gemfile_sqlite_version_redux) で、いくつかの障害に遭遇しました。1 つ目は、最新の Rails バージョン 3.2.8 にアップグレードするときにエラーが発生することです。

bash-3.2$ gem install rails
Building native extensions.  This could take a while...
ERROR:  Error installing rails:
ERROR: Failed to build gem native extension.

/Users/davidmolina/.rvm/rubies/ruby-1.9.3-p194/bin/ruby extconf.rb
creating Makefile

make
compiling generator.c
make: /usr/bin/gcc-4.2: No such file or directory
make: *** [generator.o] Error 1

Gem files will remain installed in /Users/davidmolina/.rvm/gems/ruby-1.9.3-p194/gems/json-1.7.5 for inspection.
Results logged to /Users/davidmolina/.rvm/gems/ruby-1.9.3-p194/gems/json-1.7.5/ext/json/ext/generator/gem_make.out

Rails アプリからインストールしようとする場合でも:

$ gem install rails
Building native extensions.  This could take a while...
ERROR:  Error installing rails:
ERROR: Failed to build gem native extension.

/Users/davidmolina/.rvm/rubies/ruby-1.9.3-p194/bin/ruby extconf.rb
creating Makefile

make
compiling generator.c
make: /usr/bin/gcc-4.2: No such file or directory
make: *** [generator.o] Error 1

Gem files will remain installed in /Users/davidmolina/.rvm/gems/ruby-1.9.3-p194/gems/json-1.7.5 for inspection.
Results logged to /Users/davidmolina/.rvm/gems/ruby-1.9.3-p194/gems/json-1.7.5/ext/json/ext/generator/gem_make.out

バンドルインストールを試行する場合:

$ bundle install
Could not locate Gemfile

背景の詳細​​: Mac OS X バージョン 10.8.2 Ruby 1.9.3 Rails 2.3.4

直接的なワンライナーや宝石が欠けているのではないかと思っています。

編集:sudo ln -s /usr/bin/llvm-gcc-4.2 /usr/bin/gcc-4.2 次に、bundle update rails を実行します。これで Rails 3.2.8 が実行されるはずです。投稿してくれた @peterwongpp に感謝します (http://peterwongpp.com/posts/missing-gcc-4-2-on-mountain-lion)。

答え1

探しているのに見つからないのは、C コンパイラである GCC というプログラムです。Ruby ライブラリのかなりの数には、速度のためか、既存の C ライブラリとのインターフェイスのためか、一部が C で書かれています。

XCode をインストールすればこの問題が解決すると思います。少し面倒ですが、いずれにしてもいつかは実行する必要があります。

関連情報