Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

"Failed to build gem native extension" when installing Rails

I'm new to Terminal so please bear with me. Completed installing the following successfully (in this particular order):

  • xCode 4.5
  • RVM 1.16
  • GCC 4.2.1
  • Ruby 1.9.3

When trying to install Rails ("gem install rails") the installation starts but is then interrupted with an error: "Failed to build gem native extension". No idea what this refers to. Ideas? Something else I need to install beforehand?
On my first attempt to install Rails I accidentally ran it with sudo. Will this affect anything?

Edit: And the output -

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

        /Users/staffanestberg/.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/staffanestberg/.rvm/gems/ruby-1.9.3-p194/gems/json-1.7.5 for inspection.
Results logged to /Users/staffanestberg/.rvm/gems/ruby-1.9.3-p194/gems/json-1.7.5/ext/json/ext/generator/gem_make.out


Edit: Solved using iouri's suggestion. Add export CC=gcc in .bash-profile then create a symlink for the correct compiler,

sudo ln -sf /usr/bin/llvm-gcc-4.2 /usr/bin/gcc-4.2
like image 881
Staffan Estberg Avatar asked Oct 02 '12 14:10

Staffan Estberg


2 Answers

Make sure you have command line tools for Xcode installed first, Xcode > Preferences > Downloads > Components. Then add this line to your .bash_profile file in your home folder ~/.bash_profile:

export CC=gcc

Double check that you have gcc (probably a symlink) in your /usr/bin (most likely), and that it is pointing to a valid gcc compiler, ex: gcc -> llvm-gcc-4.2

You might have to restart your terminal for this change to take affect.

like image 82
iouri Avatar answered Nov 05 '22 12:11

iouri


Ruby is not fully ready for LLVM compilation, this includes clang, there is at least one known isue with Fibers, but depending on LLVM version other problems might appear.

The right way to fix it is to get gcc-4.2 there are many ways for it and the best ones are described in requirements:

rvm get stable
rvm reload
rvm requirements run
rvm reinstall 1.9.3
like image 30
mpapis Avatar answered Nov 05 '22 11:11

mpapis