Wie Sie unten sehen können, lässt sich libv8 zwar gut installieren, therubyracer jedoch nicht. Ich verwende Mac 10.7.4.
~/.rvm/rubies/Ruby-1.9.3-p125/lib/Ruby/1.9.1> gem install libv8
Building native extensions. This could take a while...
Successfully installed libv8-3.11.8.3
1 gem installed
Installing ri documentation for libv8-3.11.8.3...
Installing RDoc documentation for libv8-3.11.8.3...
~/.rvm/rubies/Ruby-1.9.3-p125/lib/Ruby/1.9.1> gem install therubyracer
Building native extensions. This could take a while...
ERROR: Error installing therubyracer:
ERROR: Failed to build gem native extension.
/Users/rdp/.rvm/rubies/Ruby-1.9.3-p125/bin/Ruby extconf.rb
checking for main() in -lobjc... *** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers. Check the mkmf.log file for more
details. You may need configuration options.
Provided configuration options:
--with-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--Ruby=/Users/rdp/.rvm/rubies/Ruby-1.9.3-p125/bin/Ruby
--with-objclib
--without-objclib
/Users/rdp/.rvm/rubies/Ruby-1.9.3-p125/lib/Ruby/1.9.1/mkmf.rb:381:in `try_do': The compiler failed to generate an executable file. (RuntimeError)
You have to install development tools first.
from /Users/rdp/.rvm/rubies/Ruby-1.9.3-p125/lib/Ruby/1.9.1/mkmf.rb:461:in `try_link0'
from /Users/rdp/.rvm/rubies/Ruby-1.9.3-p125/lib/Ruby/1.9.1/mkmf.rb:476:in `try_link'
from /Users/rdp/.rvm/rubies/Ruby-1.9.3-p125/lib/Ruby/1.9.1/mkmf.rb:619:in `try_func'
from /Users/rdp/.rvm/rubies/Ruby-1.9.3-p125/lib/Ruby/1.9.1/mkmf.rb:845:in `block in have_library'
from /Users/rdp/.rvm/rubies/Ruby-1.9.3-p125/lib/Ruby/1.9.1/mkmf.rb:790:in `block in checking_for'
from /Users/rdp/.rvm/rubies/Ruby-1.9.3-p125/lib/Ruby/1.9.1/mkmf.rb:284:in `block (2 levels) in postpone'
from /Users/rdp/.rvm/rubies/Ruby-1.9.3-p125/lib/Ruby/1.9.1/mkmf.rb:254:in `open'
from /Users/rdp/.rvm/rubies/Ruby-1.9.3-p125/lib/Ruby/1.9.1/mkmf.rb:284:in `block in postpone'
from /Users/rdp/.rvm/rubies/Ruby-1.9.3-p125/lib/Ruby/1.9.1/mkmf.rb:254:in `open'
from /Users/rdp/.rvm/rubies/Ruby-1.9.3-p125/lib/Ruby/1.9.1/mkmf.rb:280:in `postpone'
from /Users/rdp/.rvm/rubies/Ruby-1.9.3-p125/lib/Ruby/1.9.1/mkmf.rb:789:in `checking_for'
from /Users/rdp/.rvm/rubies/Ruby-1.9.3-p125/lib/Ruby/1.9.1/mkmf.rb:840:in `have_library'
from extconf.rb:10:in `<main>'
Gem files will remain installed in /Users/rdp/.rvm/gems/Ruby-1.9.3-p125/gems/therubyracer-0.10.1 for inspection.
Results logged to /Users/rdp/.rvm/gems/Ruby-1.9.3-p125/gems/therubyracer-0.10.1/ext/v8/gem_make.out
Hier ist der mkmf.log
, der sich in ~/.rvm/rubies/Ruby-1.9.3-p125/lib/Ruby/gems/1.9/gems/therubyracer-0.10.1/ext/v8>
befindet.
Optionen zum Bearbeiten der Dateipuffer-Tools
"/usr/bin/gcc-4.2 -o conftest -I/Users/rdp/.rvm/rubies/Ruby-1.9.3-p125/include/Ruby-1.9.1/x86_64-darwin11.3.0 -I/Users/rdp/.rvm/rubies/Ruby-1.9.3-p125/include/Ruby-1.9.1/rub\
y/backward -I/Users/rdp/.rvm/rubies/Ruby-1.9.3-p125/include/Ruby-1.9.1 -I. -I/Users/rdp/.rvm/usr/include -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -O3 -ggdb -Wextra -Wno-unused-\
parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wpointer-arith -Wwrite-strings -Wdeclaration-after-statement -Wshorten-64-to-32 -Wimplicit-functio\
n-declaration -fno-common -pipe conftest.c -L. -L/Users/rdp/.rvm/rubies/Ruby-1.9.3-p125/lib -L/Users/rdp/.rvm/usr/lib -L. -lruby.1.9.1 -lpthread -ldl -lobjc "
checked program was:
/* begin */
1: #include "Ruby.h"
2:
3: int main() {return 0;}
/* end */
Sie können den Libv8 aus dem Sud anstelle des aus Gem verwenden. Sie können dies tun, indem Sie die folgenden Befehle ausführen:
$ gem uninstall libv8
$ brew install v8
$ gem install therubyracer
Für ein älteres Projekt musste ich die Version 0.10.1 von Rubyracer für Mavericks verwenden (Bootstrap hängt davon ab)
Also musste ich eine ältere Version von gcc verwenden
bearbeiten Sie Ihre .zshrc oder .bashrc
export CC=/usr/local/Cellar/Apple-gcc42/4.2.1-5666.3/bin/gcc-4.2
export CXX=/usr/local/Cellar/Apple-gcc42/4.2.1-5666.3/bin/g++-4.2
export CPP=/usr/local/Cellar/Apple-gcc42/4.2.1-5666.3/bin/cpp-4.2
stellen Sie sicher, dass Sie alle älteren Versionen von libv8 deinstalliert haben
gem uninstall libv8
installieren Sie Ihre Version von Therubyracer
gem install therubyracer -v=0.10.1
Für Linux:
Der folgende Code ist natürlich korrekt
$ gem uninstall libv8
$ gem install therubyracer
Aber manchmal hilft es nicht, weil Sie make
nicht programmiert haben. ZU BEGINN Sie müssen make
installieren. Führen Sie dazu Folgendes aus:
Sudo apt-get install build-essential
Und erst danach:
gem install therubyracer
Auf Mavericks müssen Sie nur auf therubyracer 0.12.0 aktualisieren
Die Lösung, die für mich funktionierte, bestand darin, diese Schritte am 10.7.4 zusammenzustellen
export CC=gcc-4.2
Sudo ln /usr/bin/gcc /usr/bin/gcc-4.2
gem uninstall libv8
gem install therubyracer
Mac 10.10.5, Ruby 2.1.0 hat für mich funktioniert:
gem uninstall libv8
gem uninstall therubyracer
brew upgrade gcc
brew install v8
bundle config --local build.libv8 --with-cxx=/usr/local/bin/gcc-6
gem install libv8 -v '3.16.14.17' -- --with-system-v8
gem install therubyracer -- --with-v8-dir=/usr/local/opt/v8-315
bundle install # worked !
Auf Mountain Lion 10.8 ist kein C-Compiler vorinstalliert. Sie müssen das "Command Line Tools" -Paket von Apple selbst herunterladen und installieren und anschließend which gcc
ausführen, um zu bestätigen, dass es installiert ist. Von da an sollte alles gut laufen.
Unter OS X 10.7 fand ich tatsächlich heraus, dass das "Command Line Tools" -Paket nicht genug war, ich musste das komplette XCode-Paket installieren, dann funktionierte die gem-Installation.
Ich hatte das gleiche Problem, als ich von OSX Mountain Lion auf OSX Mavericks aufgerüstet habe.
Ein Upgrade von Ruby-1.8.7-p354 auf Ruby-1.8.7-375 hat mich ausgereicht. Wenn Sie sich auf Ruby-1.93-p125 befinden, möchten Sie vielleicht ein Upgrade auf 1.9.3-rc1 durchführen (was bereits über p484 liegt).
libv8 (3.16.14.3-x86_64-darwin-13) und die therubyracer (0.12.0) gems problemlos installiert.
vorausgesetzt, Sie verwenden rbenv:
rbenv install 1.9.3-rc1
rbenv rehash
rbenv Shell 1.9.3-rc1
bundle install
Laut https://github.com/cowboyd/therubyracer/issues/420#issuecomment-253592865
gem uninstall therubyracer
gem uninstall libv8
brew uninstall v8
brew install v8
gem install libv8
gem install therubyracer
Es hat mir geholfen. Parameter: Ruby 2.3.3
, Rails 4.2.9
Ich hatte bis jetzt genau das gleiche Problem.
Dieser Link hat mich gerettet.
zusammenfassend müssen Sie Folgendes tun:
$ gem uninstall libv8
$ gem install therubyracer
bevor ich dieses Problem behoben habe, hatte ich v8 in meinem Mac installiert. ich weiß nicht, ob das geholfen hat, da es etwas mit js interpreter zu tun hat, dachte ich, es könnte helfen.
@ Haegins Antwort in https://github.com/cowboyd/libv8/issues/205
brew uninstall v8
brew install v8-315
gem uninstall -a libv8
gem uninstall -a therubyracer
gem install libv8 -v '3.16.14.17' -- --with-system-v8
gem install therubyracer -v '0.12.2' -- --with-v8-dir=$(brew --prefix v8-315)