title: Failed to build gem native extension
body: <p>End result is I'm trying to get Ruby on Rails installed on my OS 10.7.3, but having various issues.</p>
  
  <p>Also, I have a freshly installed XCode 4.3 from the App Store.</p>
  
  <p>When I fire up the terminal, and enter:</p>
  
  <pre><code>sudo gem install rails
  </code></pre>
  
  <p>and it writes out:</p>
  
  <pre><code>Building native extensions.  This could take a while...
  ERROR:  Error installing rails:
      ERROR: Failed to build gem native extension.
  
          /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby extconf.rb
  mkmf.rb can't find header files for ruby at /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/ruby.h
  
  
  Gem files will remain installed in /Library/Ruby/Gems/1.8/gems/json-1.6.5 for inspection.
  Results logged to /Library/Ruby/Gems/1.8/gems/json-1.6.5/ext/json/ext/parser/gem_make.out
  </code></pre>
  
  <p>In all of the fixes I'm finding says to install XCode, which I have and runs just fine. However, I did uninstall a previous version of XCode to install the latest version, so I'm wondering if there is any relation there. </p>
  
  <p><strong>EDIT 1:</strong>
  I've followed Jasdeep suggestion and installed RVM. But once i run:</p>
  
  <pre><code>sudo rvm install 1.9.3
  </code></pre>
  
  <p>I get the following:</p>
  
  <pre><code>Fetching yaml-0.1.4.tar.gz to /Users/xxx/.rvm/archives
  Extracting yaml-0.1.4.tar.gz to /Users/xxx/.rvm/src
  Configuring yaml in /Users/xxx/.rvm/src/yaml-0.1.4.
  Error running ' ./configure --prefix="/Users/xxx/.rvm/usr"  ', please read /Users/xxx/.rvm/log/ruby-1.9.3-p0/yaml/configure.log
  Compiling yaml in /Users/xxx/.rvm/src/yaml-0.1.4.
  Error running 'make ', please read /Users/xxx/.rvm/log/ruby-1.9.3-p0/yaml/make.log
  
  
  Database file /Users/xxx/.rvm/config/packages does not exist.
  
  gcc-4.2: error trying to exec '/usr/bin/i686-apple-darwin11-gcc-4.2.1': execvp: No such file or directory
  Installing Ruby from source to: /Users/xxx/.rvm/rubies/ruby-1.9.3-p0, this may take a while depending on your cpu(s)...
  
  ruby-1.9.3-p0 - #fetching 
  ruby-1.9.3-p0 - #downloading ruby-1.9.3-p0, this may take a while depending on your connection...
    % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                   Dload  Upload   Total   Spent    Left  Speed
  100 9330k  100 9330k    0     0   645k      0  0:00:14  0:00:14 --:--:-- 1260k
  ruby-1.9.3-p0 - #extracting ruby-1.9.3-p0 to /Users/xxx/.rvm/src/ruby-1.9.3-p0
  ruby-1.9.3-p0 - #extracted to /Users/xxx/.rvm/src/ruby-1.9.3-p0
  ruby-1.9.3-p0 - #configuring 
  Error running ' ./configure --prefix=/Users/xxx/.rvm/rubies/ruby-1.9.3-p0 --enable-shared --disable-install-doc --with-libyaml --with-opt-dir=/Users/xxx/.rvm/usr ', please read /Users/xxx/.rvm/log/ruby-1.9.3-p0/configure.log
  There has been an error while running configure. Halting the installation.
  </code></pre>
  
  <p>So then I looked up what was in the log file, ..ruby-1.9.3-p0/yaml/configure.log:</p>
  
  <pre><code>[2012-03-03 22:49:50]  ./configure --prefix="/Users/xxx/.rvm/usr"  
  checking for a BSD-compatible install... /usr/bin/install -c
  checking whether build environment is sane... yes
  checking for a thread-safe mkdir -p... config/install-sh -c -d
  checking for gawk... no
  checking for mawk... no
  checking for nawk... no
  checking for awk... awk
  checking whether make sets $(MAKE)... no
  checking for gcc... no
  checking for cc... no
  checking for cl.exe... no
  configure: error: in `/Users/xxx/.rvm/src/yaml-0.1.4':
  configure: error: no acceptable C compiler found in $PATH
  See `config.log' for more details
  </code></pre>
  
  <p>So now it appears the error is:</p>
  
  <pre><code>no acceptable C compiler found in $PATH
  </code></pre>
  
  <p><strong>Edit 2:</strong></p>
  
  <p>I've followed matt's instructions and was able to get further once I got the command-line tools installed (since I have Xcode 4.3 now). However, I'm still getting an error:</p>
  
  <pre><code>Fetching yaml-0.1.4.tar.gz to /Users/xxx/.rvm/archives
  Extracting yaml-0.1.4.tar.gz to /Users/xxx/.rvm/src
  Configuring yaml in /Users/xxx/.rvm/src/yaml-0.1.4.
  Compiling yaml in /Users/xxx/.rvm/src/yaml-0.1.4.
  Installing yaml to /Users/xxx/.rvm/usr
  gcc-4.2: error trying to exec '/usr/bin/i686-apple-darwin11-gcc-4.2.1': execvp: No such file or directory
  Installing Ruby from source to: /Users/xxx/.rvm/rubies/ruby-1.9.3-p0, this may take a while depending on your cpu(s)...
  
  ruby-1.9.3-p0 - #fetching 
  ruby-1.9.3-p0 - #extracted to /Users/xxx/.rvm/src/ruby-1.9.3-p0 (already extracted)
  ruby-1.9.3-p0 - #configuring 
  Error running ' ./configure --prefix=/Users/xxx/.rvm/rubies/ruby-1.9.3-p0 --enable-shared --disable-install-doc --with-libyaml --with-opt-dir=/Users/xxx/.rvm/usr ', please read /Users/xxx/.rvm/log/ruby-1.9.3-p0/configure.log
  There has been an error while running configure. Halting the installation.
  </code></pre>
  
  <p>Below is the configure.log (sorry this post is getting so long, but hopefully it can help others too):</p>
  
  <pre><code>[2012-03-04 09:29:35]  ./configure --prefix="/Users/xxx/.rvm/usr"  
  checking for a BSD-compatible install... /usr/bin/install -c
  checking whether build environment is sane... yes
  checking for a thread-safe mkdir -p... config/install-sh -c -d
  checking for gawk... no
  checking for mawk... no
  checking for nawk... no
  checking for awk... awk
  checking whether make sets $(MAKE)... yes
  checking for gcc... gcc
  checking whether the C compiler works... yes
  checking for C compiler default output file name... a.out
  checking for suffix of executables... 
  checking whether we are cross compiling... no
  checking for suffix of object files... o
  checking whether we are using the GNU C compiler... yes
  checking whether gcc accepts -g... yes
  checking for gcc option to accept ISO C89... none needed
  checking for style of include used by make... GNU
  checking dependency style of gcc... gcc3
  checking how to run the C preprocessor... gcc -E
  checking whether ln -s works... yes
  checking whether make sets $(MAKE)... (cached) yes
  checking build system type... x86_64-apple-darwin11.3.0
  checking host system type... x86_64-apple-darwin11.3.0
  checking for a sed that does not truncate output... /usr/bin/sed
  checking for grep that handles long lines and -e... /usr/bin/grep
  checking for egrep... /usr/bin/grep -E
  checking for fgrep... /usr/bin/grep -F
  checking for ld used by gcc... /usr/llvm-gcc-4.2/libexec/gcc/i686-apple-darwin11/4.2.1/ld
  checking if the linker (/usr/llvm-gcc-4.2/libexec/gcc/i686-apple-darwin11/4.2.1/ld) is GNU ld... no
  checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm
  checking the name lister (/usr/bin/nm) interface... BSD nm
  checking the maximum length of command line arguments... 196608
  checking whether the shell understands some XSI constructs... yes
  checking whether the shell understands "+="... yes
  checking for /usr/llvm-gcc-4.2/libexec/gcc/i686-apple-darwin11/4.2.1/ld option to reload object files... -r
  checking for objdump... no
  checking how to recognize dependent libraries... pass_all
  checking for ar... ar
  checking for strip... strip
  checking for ranlib... ranlib
  checking command to parse /usr/bin/nm output from gcc object... ok
  checking for dsymutil... dsymutil
  checking for nmedit... nmedit
  checking for lipo... lipo
  checking for otool... otool
  checking for otool64... no
  checking for -single_module linker flag... yes
  checking for -exported_symbols_list linker flag... yes
  checking for ANSI C header files... yes
  checking for sys/types.h... yes
  checking for sys/stat.h... yes
  checking for stdlib.h... yes
  checking for string.h... yes
  checking for memory.h... yes
  checking for strings.h... yes
  checking for inttypes.h... yes
  checking for stdint.h... yes
  checking for unistd.h... yes
  checking for dlfcn.h... yes
  checking for objdir... .libs
  checking if gcc supports -fno-rtti -fno-exceptions... no
  checking for gcc option to produce PIC... -fno-common -DPIC
  checking if gcc PIC flag -fno-common -DPIC works... yes
  checking if gcc static flag -static works... no
  checking if gcc supports -c -o file.o... yes
  checking if gcc supports -c -o file.o... (cached) yes
  checking whether the gcc linker (/usr/llvm-gcc-4.2/libexec/gcc/i686-apple-darwin11/4.2.1/ld) supports shared libraries... yes
  checking dynamic linker characteristics... darwin11.3.0 dyld
  checking how to hardcode library paths into programs... immediate
  checking whether stripping libraries is possible... yes
  checking if libtool supports shared libraries... yes
  checking whether to build shared libraries... yes
  checking whether to build static libraries... yes
  checking for doxygen... false
  checking for ANSI C header files... (cached) yes
  checking for stdlib.h... (cached) yes
  checking for an ANSI C-conforming const... yes
  checking for size_t... yes
  configure: creating ./config.status
  config.status: creating yaml-0.1.pc
  config.status: creating include/Makefile
  config.status: creating src/Makefile
  config.status: creating Makefile
  config.status: creating tests/Makefile
  config.status: creating win32/Makefile
  config.status: creating config.h
  config.status: config.h is unchanged
  config.status: executing depfiles commands
  config.status: executing libtool commands
  </code></pre>