title: Fix therubyracer/libv8 (0.12.1) installation on Mavericks
body: <p>OK, I’m at the end of my tether with this. There are a few similar questions but they all refer to therubyracer 0.10, and they mostly conclude that the problem can be fixed by upgrading to 0.12. </p>
  
  <p>I’m having similar problems, but when I use 0.12.</p>
  
  <h3>Similar questions</h3>
  
  <ul>
  <li><a href="https://stackoverflow.com/questions/19577759/installing-libv8-gem-on-mavericks">Installing libv8 gem on Mavericks</a></li>
  <li><a href="https://stackoverflow.com/questions/19568852/how-to-fix-libv8-error-from-gemfile-on-mavericks">How to fix libv8 error from Gemfile on Mavericks?</a></li>
  </ul>
  
  <p>I’m having problems using ‘standard’ (xcode?) gcc, and both apple-gcc42 and gcc from homebrew. I’ve tried both <code>--with-system-v8</code> and <code>--without-system-v8</code>, and again, no dice.</p>
  
  <p>Here’s some logs:</p>
  
  <h2>Starting from scratch…</h2>
  
  <pre><code> $ cd ~/Documents/code/website
   $ rvm gemset empty
   $ ruby -v
   ruby 1.9.3p448 (2013-06-27 revision 41675) [x86_64-darwin10.8.0]
   $ grep rubyracer Gemfile
   gem 'therubyracer', '~&gt; 0.12.0'
   $ brew list | grep v8
   $ cat ~/.bundle/config 
   $ cat .bundle/config 
   BUNDLE_BIN: bin
   $ $CXX
   $ $CPP
   $ $CC
   $ which gcc
   /usr/bin/gcc
   $ which g++
   /usr/bin/g++
   $ g++ -v
   Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with- 
   gxx-include-dir=/usr/include/c++/4.2.1
   Apple LLVM version 5.1 (clang-503.0.38) (based on LLVM 3.4svn)
   Target: x86_64-apple-darwin13.0.0
   Thread model: posix
  </code></pre>
  
  <h2>Try a bundle install</h2>
  
  <pre><code>Installing libv8 (3.16.14.3) 
  Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.
  
      /Users/chris/.rvm/rubies/ruby-1.9.3-p448/bin/ruby extconf.rb 
  creating Makefile
  Compiling v8 for x64
  Using python 2.7.5
  Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
  Unable to find a compiler officially supported by v8.
  It is recommended to use GCC v4.4 or higher
  Using compiler: g++
  Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
  Unable to find a compiler officially supported by v8.
  It is recommended to use GCC v4.4 or higher
  ../src/cached-powers.cc:136:18: error: unused variable 'kCachedPowersLength' [-Werror,-Wunused-const-variable]
  static const int kCachedPowersLength = ARRAY_SIZE(kCachedPowers);
                   ^
  1 error generated.
  make[1]: *** [/Users/chris/.rvm/gems/ruby-1.9.3-p448@website/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/preparser_lib/src/cached-powers.o] Error 1
  make: *** [x64.release] Error 2
  /Users/chris/.rvm/gems/ruby-1.9.3-p448@website/gems/libv8-3.16.14.3/ext/libv8/location.rb:36:in `block in verify_installation!': libv8 did not install properly, expected binary v8 archive '/Users/chris/.rvm/gems/ruby-1.9.3-p448@website/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/tools/gyp/libv8_base.a'to exist, but it was not found (Libv8::Location::Vendor::ArchiveNotFound)
      from /Users/chris/.rvm/gems/ruby-1.9.3-p448@website/gems/libv8-3.16.14.3/ext/libv8/location.rb:35:in `each'
      from /Users/chris/.rvm/gems/ruby-1.9.3-p448@website/gems/libv8-3.16.14.3/ext/libv8/location.rb:35:in `verify_installation!'
      from /Users/chris/.rvm/gems/ruby-1.9.3-p448@website/gems/libv8-3.16.14.3/ext/libv8/location.rb:26:in `install!'
      from extconf.rb:7:in `&lt;main&gt;'
  GYP_GENERATORS=make \
      build/gyp/gyp --generator-output="out" build/all.gyp \
                    -Ibuild/standalone.gypi --depth=. \
                    -Dv8_target_arch=x64 \
                    -S.x64  -Dv8_enable_backtrace=1 -Dv8_can_use_vfp2_instructions=true -Darm_fpu=vfpv2 -Dv8_can_use_vfp3_instructions=true -Darm_fpu=vfpv3
    CXX(target) /Users/chris/.rvm/gems/ruby-1.9.3-p448@website/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/preparser_lib/src/allocation.o
    CXX(target) /Users/chris/.rvm/gems/ruby-1.9.3-p448@website/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/preparser_lib/src/atomicops_internals_x86_gcc.o
    CXX(target) /Users/chris/.rvm/gems/ruby-1.9.3-p448@website/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/preparser_lib/src/bignum.o
    CXX(target) /Users/chris/.rvm/gems/ruby-1.9.3-p448@website/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/preparser_lib/src/bignum-dtoa.o
    CXX(target) /Users/chris/.rvm/gems/ruby-1.9.3-p448@website/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/preparser_lib/src/cached-powers.o
  
  
  Gem files will remain installed in /Users/chris/.rvm/gems/ruby-1.9.3-p448@website/gems/libv8-3.16.14.3 for inspection.
  Results logged to /Users/chris/.rvm/gems/ruby-1.9.3-p448@website/gems/libv8-3.16.14.3/ext/libv8/gem_make.out
  
  An error occurred while installing libv8 (3.16.14.3), and Bundler cannot continue.
  </code></pre>
  
  <h2>Bad times.</h2>
  
  <p>Error message advises that gcc 4.4+ is recommended. We can do that.</p>
  
  <pre><code>$ export CXX=/usr/local/Cellar/gcc48/4.8.2/bin/g++-4.8 
  $ export CPP=/usr/local/Cellar/gcc48/4.8.2/bin/cpp-4.8 
  $ export CC=/usr/local/Cellar/gcc48/4.8.2/bin/gcc-4.8 
  $ which $CXX
  /usr/local/Cellar/gcc48/4.8.2/bin/g++-4.8
  $ which $CPP
  /usr/local/Cellar/gcc48/4.8.2/bin/cpp-4.8
  $ which $CC
  /usr/local/Cellar/gcc48/4.8.2/bin/gcc-4.8
  $ bundle install
  …
  Installing libv8 (3.16.14.3) 
  Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.
  
          /Users/chris/.rvm/rubies/ruby-1.9.3-p448/bin/ruby extconf.rb 
  creating Makefile
  Compiling v8 for x64
  Using python 2.7.5
  Using compiler: /usr/local/Cellar/gcc48/4.8.2/bin/g++-4.8
  g++-4.8: error: unrecognized command line option '-Wnewline-eof'
  make[1]: *** [/Users/chris/.rvm/gems/ruby-1.9.3-p448@website/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/preparser_lib/src/allocation.o] Error 1
  make: *** [x64.release] Error 2
  /Users/chris/.rvm/gems/ruby-1.9.3-p448@website/gems/libv8-3.16.14.3/ext/libv8/location.rb:36:in `block in verify_installation!': libv8 did not install properly, expected binary v8 archive '/Users/chris/.rvm/gems/ruby-1.9.3-p448@website/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/tools/gyp/libv8_base.a'to exist, but it was not found (Libv8::Location::Vendor::ArchiveNotFound)
      from /Users/chris/.rvm/gems/ruby-1.9.3-p448@website/gems/libv8-3.16.14.3/ext/libv8/location.rb:35:in `each'
      from /Users/chris/.rvm/gems/ruby-1.9.3-p448@website/gems/libv8-3.16.14.3/ext/libv8/location.rb:35:in `verify_installation!'
      from /Users/chris/.rvm/gems/ruby-1.9.3-p448@website/gems/libv8-3.16.14.3/ext/libv8/location.rb:26:in `install!'
      from extconf.rb:7:in `&lt;main&gt;'
  GYP_GENERATORS=make \
      build/gyp/gyp --generator-output="out" build/all.gyp \
                    -Ibuild/standalone.gypi --depth=. \
                    -Dv8_target_arch=x64 \
                    -S.x64  -Dv8_enable_backtrace=1 -Dv8_can_use_vfp2_instructions=true -Darm_fpu=vfpv2 -Dv8_can_use_vfp3_instructions=true -Darm_fpu=vfpv3
    CXX(target) /Users/chris/.rvm/gems/ruby-1.9.3-p448@website/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/preparser_lib/src/allocation.o
  
  
  Gem files will remain installed in /Users/chris/.rvm/gems/ruby-1.9.3-p448@website/gems/libv8-3.16.14.3 for inspection.
  Results logged to /Users/chris/.rvm/gems/ruby-1.9.3-p448@website/gems/libv8-3.16.14.3/ext/libv8/gem_make.out
  
  An error occurred while installing libv8 (3.16.14.3), and Bundler cannot continue.
  Make sure that `gem install libv8 -v '3.16.14.3'` succeeds before bundling.
  </code></pre>
  
  <h2>Worse times!</h2>
  
  <p>OK. So to fix the issues with therubyracer 0.10, some people recommend brew installing v8, then telling rubygems to use system v8. Let’s see what happens!</p>
  
  <pre><code>$ brew install v8
  ==&gt; Downloading https://github.com/v8/v8/archive/3.21.17.tar.gz
  Already downloaded: /Library/Caches/Homebrew/v8-3.21.17.tar.gz
  ==&gt; Checking out http://gyp.googlecode.com/svn/trunk
  ==&gt; make native -j4 library=shared snapshot=on console=readline i18nsupport=off
    /usr/local/Cellar/v8/3.21.17: 21 files, 27M, built in 3.4 minutes
  $ cat ~/.bundle/config 
  ---
  BUNDLE_BUILD__LIBV8: --with-system-v8
  $ bundle install
  …
  Installing therubyracer (0.12.1) 
  Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.
  
          /Users/chris/.rvm/rubies/ruby-1.9.3-p448/bin/ruby extconf.rb 
  checking for main() in -lpthread... yes
  checking for main() in -lobjc... yes
  checking for v8.h... yes
  creating Makefile
  
  make
  compiling accessor.cc
  clang: warning: argument unused during compilation: '-rdynamic'
  In file included from accessor.cc:1:
  ./rr.h:463:14: error: no type named 'AccessorGetter' in namespace 'v8'
    inline v8::AccessorGetter accessorGetter() {return &amp;AccessorGetter;}
           ~~~~^
  ./rr.h:464:14: error: no type named 'AccessorSetter' in namespace 'v8'
    inline v8::AccessorSetter accessorSetter() {return RTEST(set) ? &amp;AccessorSetter : 0;}
           ~~~~^
  ./rr.h:466:14: error: no type named 'NamedPropertyGetter' in namespace 'v8'
    inline v8::NamedPropertyGetter namedPropertyGetter() {return &amp;NamedPropertyGetter;}
           ~~~~^
  ./rr.h:467:14: error: no type named 'NamedPropertySetter' in namespace 'v8'
    inline v8::NamedPropertySetter namedPropertySetter() {return RTEST(set) ? &amp;NamedPropertySetter : 0;}
           ~~~~^
  ./rr.h:468:14: error: no type named 'NamedPropertyQuery' in namespace 'v8'
    inline v8::NamedPropertyQuery namedPropertyQuery() {return RTEST(query) ? &amp;NamedPropertyQuery : 0;}
           ~~~~^
  ./rr.h:469:14: error: no type named 'NamedPropertyDeleter' in namespace 'v8'
    inline v8::NamedPropertyDeleter namedPropertyDeleter() {return RTEST(deleter) ? &amp;NamedPropertyDeleter : 0;}
           ~~~~^
  ./rr.h:470:14: error: no type named 'NamedPropertyEnumerator' in namespace 'v8'
    inline v8::NamedPropertyEnumerator namedPropertyEnumerator() {return RTEST(enumerator) ? &amp;NamedPropertyEnumerator : 0;}
           ~~~~^
  ./rr.h:472:14: error: no type named 'IndexedPropertyGetter' in namespace 'v8'
    inline v8::IndexedPropertyGetter indexedPropertyGetter() {return &amp;IndexedPropertyGetter;}
           ~~~~^
  ./rr.h:473:14: error: no type named 'IndexedPropertySetter' in namespace 'v8'
    inline v8::IndexedPropertySetter indexedPropertySetter() {return RTEST(set) ? &amp;IndexedPropertySetter : 0;}
           ~~~~^
  ./rr.h:474:14: error: no type named 'IndexedPropertyQuery' in namespace 'v8'
    inline v8::IndexedPropertyQuery indexedPropertyQuery() {return RTEST(query) ? &amp;IndexedPropertyQuery : 0;}
           ~~~~^
  ./rr.h:475:14: error: no type named 'IndexedPropertyDeleter' in namespace 'v8'
    inline v8::IndexedPropertyDeleter indexedPropertyDeleter() {return RTEST(deleter) ? &amp;IndexedPropertyDeleter : 0;}
           ~~~~^
  ./rr.h:476:14: error: no type named 'IndexedPropertyEnumerator' in namespace 'v8'
    inline v8::IndexedPropertyEnumerator indexedPropertyEnumerator() {return RTEST(enumerator) ? &amp;IndexedPropertyEnumerator : 0;}
           ~~~~^
  ./rr.h:482:16: error: no type named 'AccessorInfo' in namespace 'v8'; did you mean 'Accessor'?
      Info(const v8::AccessorInfo&amp; info);
                 ^~~~~~~~~~~~~~~~
                 Accessor
  ./rr.h:456:7: note: 'Accessor' declared here
  class Accessor {
        ^
  ./rr.h:488:18: error: no type named 'AccessorInfo' in namespace 'v8'; did you mean 'Accessor'?
      inline const v8::AccessorInfo* operator-&gt;() {return this-&gt;info;}
                   ^~~~~~~~~~~~~~~~
                   Accessor
  ./rr.h:456:7: note: 'Accessor' declared here
  class Accessor {
        ^
  ./rr.h:502:11: error: no type named 'AccessorInfo' in namespace 'v8'; did you mean 'Accessor'?
      const v8::AccessorInfo* info;
            ^~~~~~~~~~~~~~~~
            Accessor
  ./rr.h:456:7: note: 'Accessor' declared here
  class Accessor {
        ^
  ./rr.h:506:85: error: no type named 'AccessorInfo' in namespace 'v8'; did you mean 'Accessor'?
    static v8::Handle&lt;v8::Value&gt; AccessorGetter(v8::Local&lt;v8::String&gt; property, const v8::AccessorInfo&amp; info);
                                                                                      ^~~~~~~~~~~~~~~~
                                                                                      Accessor
  ./rr.h:456:7: note: 'Accessor' declared here
  class Accessor {
        ^
  ./rr.h:507:96: error: no type named 'AccessorInfo' in namespace 'v8'; did you mean 'Accessor'?
    static void AccessorSetter(v8::Local&lt;v8::String&gt; property, v8::Local&lt;v8::Value&gt; value, const v8::AccessorInfo&amp; info);
                                                                                                 ^~~~~~~~~~~~~~~~
                                                                                                 Accessor
  ./rr.h:456:7: note: 'Accessor' declared here
  class Accessor {
        ^
  ./rr.h:509:90: error: no type named 'AccessorInfo' in namespace 'v8'; did you mean 'Accessor'?
    static v8::Handle&lt;v8::Value&gt; NamedPropertyGetter(v8::Local&lt;v8::String&gt; property, const v8::AccessorInfo&amp; info);
                                                                                           ^~~~~~~~~~~~~~~~
                                                                                           Accessor
  ./rr.h:456:7: note: 'Accessor' declared here
  class Accessor {
        ^
  ./rr.h:510:118: error: no type named 'AccessorInfo' in namespace 'v8'; did you mean 'Accessor'?
    static v8::Handle&lt;v8::Value&gt; NamedPropertySetter(v8::Local&lt;v8::String&gt; property, v8::Local&lt;v8::Value&gt; value, const v8::AccessorInfo&amp; info);
                                                                                                                       ^~~~~~~~~~~~~~~~
                                                                                                                       Accessor
  ./rr.h:456:7: note: 'Accessor' declared here
  class Accessor {
        ^
  fatal error: too many errors emitted, stopping now [-ferror-limit=]
  20 errors generated.
  make: *** [accessor.o] Error 1
  
  
  Gem files will remain installed in /Users/chris/.rvm/gems/ruby-1.9.3-p448/gems/therubyracer-0.12.1 for inspection.
  Results logged to /Users/chris/.rvm/gems/ruby-1.9.3-p448/gems/therubyracer-0.12.1/ext/v8/gem_make.out
  
  An error occurred while installing therubyracer (0.12.1), and Bundler cannot continue.
  Make sure that `gem install therubyracer -v '0.12.1'` succeeds before bundling.
  </code></pre>
  
  <p>Completely scratching my head, and already wasted hours on this. If you can spot what’s going wrong and help me fix it, you’ll be my hero(ine) forever.</p>