Comme vous pouvez le voir ci-dessous, libv8 s’installe correctement, mais pas Thubyracer. J'utilise 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
Voici le mkmf.log
, situé dans ~/.rvm/rubies/Ruby-1.9.3-p125/lib/Ruby/gems/1.9/gems/therubyracer-0.10.1/ext/v8>
.
Fichier Édition Options Tampons Outils Aide
"/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 */
Vous pouvez utiliser le Libv8 de la bière au lieu de celui de Gem. Vous pouvez le faire en suivant les commandes:
$ gem uninstall libv8
$ brew install v8
$ gem install therubyracer
Pour un projet plus ancien, je devais utiliser la version 0.10.1 de rubyracer sur des francs-tireurs (le bootstrap en dépend)
J'ai donc dû utiliser une ancienne version de gcc
éditez votre .zshrc ou .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
assurez-vous d'avoir désinstallé toutes les anciennes versions de libv8
gem uninstall libv8
installez votre version de therubyracer
gem install therubyracer -v=0.10.1
Pour Linux:
Le code ci-dessous est bien sûr correct
$ gem uninstall libv8
$ gem install therubyracer
Mais parfois, cela n'aide pas parce que vous n'avez pas programmé make
. EN PREMIER vous devez installer make
. Pour cela, lancez:
Sudo apt-get install build-essential
Et seulement après cela:
gem install therubyracer
Sur Mavericks, il vous suffit de mettre à jour therubyracer 0.12.0
La solution qui a fonctionné pour moi a été de regrouper ces étapes le 10.7.4.
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 cela a fonctionné pour moi:
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 !
Sur Mountain Lion 10.8, il n’est pas fourni avec un compilateur C. Vous devez télécharger et installer le package "Outils de ligne de commande" d'Apple, puis exécuter which gcc
pour vérifier qu'il est installé. Tout devrait bien se dérouler à partir de là.
Sur OS X 10.7, j’ai en fait constaté que le package "Outils de ligne de commande" ne suffisait pas, je devais installer le package complet XCode, puis l’installation de gem a fonctionné.
J'ai eu le même problème lors de la mise à niveau d'OSX Mountain Lion vers OSX Mavericks.
Passer de Ruby-1.8.7-p354 à Ruby-1.8.7-375 a été très utile. Si vous êtes sur Ruby-1.93-p125, vous pouvez essayer de passer à la version 1.9.3-rc1 (qui est déjà au-dessus de p484)
libv8 (3.16.14.3-x86_64-darwin-13) et les gems therubyracer (0.12.0) installés sans problème.
en supposant que vous utilisiez rbenv:
rbenv install 1.9.3-rc1
rbenv rehash
rbenv Shell 1.9.3-rc1
bundle install
Selon 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
Ça m'a aidé. Paramètres: Ruby 2.3.3
, Rails 4.2.9
J'ai eu exactement le même problème jusqu'à maintenant.
Ce lien m'a sauvé.
pour résumer, vous devez faire ceci:
$ gem uninstall libv8
$ gem install therubyracer
avant de résoudre ce problème, j'avais installé v8 dans mon mac. Je ne sais pas si cela a aidé, puisqu'il semble que js ait à faire avec js interpreter, j'ai pensé que cela pourrait aider.