90 votes

"gem install therubyracer -v '0.10.2'" sur osx mavericks ne pas installer

Essayez d'installer therubyracer sur mavericks à l'aide de "gem install therubyracer -v '0.10.2'", mais j'obtiens l'erreur suivante:

/Users/dennischen/.rvm/rubies/ruby-1.9.3-p194/bin/ruby extconf.rb
checking for main() in -lobjc... yes
creating Makefile

make
compiling rr.cpp
clang: warning: argument unused during compilation: '-rdynamic'
rr.cpp:48:1: warning: control reaches end of non-void function [-Wreturn-type]
}
^
1 warning generated.
compiling v8.cpp
clang: warning: argument unused during compilation: '-rdynamic'
compiling v8_array.cpp
clang: warning: argument unused during compilation: '-rdynamic'
compiling v8_callbacks.cpp
clang: warning: argument unused during compilation: '-rdynamic'
compiling v8_context.cpp
clang: warning: argument unused during compilation: '-rdynamic'
compiling v8_date.cpp
clang: warning: argument unused during compilation: '-rdynamic'
compiling v8_debug.cpp
clang: warning: argument unused during compilation: '-rdynamic'
compiling v8_exception.cpp
clang: warning: argument unused during compilation: '-rdynamic'
v8_exception.cpp:10:16: warning: unused variable 'stack' [-Wunused-variable]
  static void* stack[20];
               ^
1 warning generated.
compiling v8_external.cpp
clang: warning: argument unused during compilation: '-rdynamic'
v8_external.cpp:10:9: warning: unused variable 'references' [-Wunused-variable]
  VALUE references;
        ^
1 warning generated.
compiling v8_function.cpp
clang: warning: argument unused during compilation: '-rdynamic'
compiling v8_handle.cpp
clang: warning: argument unused during compilation: '-rdynamic'
compiling v8_locker.cpp
clang: warning: argument unused during compilation: '-rdynamic'
v8_locker.cpp:45:5: warning: control reaches end of non-void function [-Wreturn-type]
    }
    ^
v8_locker.cpp:85:5: warning: control reaches end of non-void function [-Wreturn-type]
    }
    ^
2 warnings generated.
compiling v8_message.cpp
clang: warning: argument unused during compilation: '-rdynamic'
compiling v8_object.cpp
clang: warning: argument unused during compilation: '-rdynamic'
v8_object.cpp:77:19: warning: unused variable 'proto' [-Wunused-variable]
    Handle<Value> proto(rr_rb2v8(prototype));
                  ^
1 warning generated.
compiling v8_script.cpp
clang: warning: argument unused during compilation: '-rdynamic'
compiling v8_string.cpp
clang: warning: argument unused during compilation: '-rdynamic'
compiling v8_template.cpp
clang: warning: argument unused during compilation: '-rdynamic'
compiling v8_try_catch.cpp
clang: warning: argument unused during compilation: '-rdynamic'
compiling v8_v8.cpp
clang: warning: argument unused during compilation: '-rdynamic'
compiling v8_value.cpp
clang: warning: argument unused during compilation: '-rdynamic'
v8_value.cpp:100:9: warning: unused function 'ToInt32' [-Wunused-function]
  VALUE ToInt32(VALUE self) {
        ^
1 warning generated.
compiling v8_weakref.cpp
clang: warning: argument unused during compilation: '-rdynamic'
linking shared-object v8.bundle
clang: error: no such file or directory: '/Users/dennischen/.rvm/gems/ruby-1.9.3-p194@panini/gems/libv8-3.3.10.4/lib/libv8/build/v8/libv8.a'
make: *** [v8.bundle] Error 1

quelqu'un peut-il m'aider à comprendre comment obtenir ce joyau de travail? J'ai les outils de ligne de commande installé.

242voto

ju. Points 3497

Si vous décidez d'utiliser un nouveau therubyracer gem version, vous n'aurez plus ce problème

Sinon:

brew tap homebrew/dupes # Thanks Tom
brew install apple-gcc42

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

brew uninstall v8

gem uninstall libv8

gem install therubyracer -v '0.10.2' # specify version

16voto

damianmr Points 199

Alors finalement je l'ai eu à travailler après un certain en difficulté... merci à Simon et Alvaro.

J'ai une chose à ajouter, à l'aide de l'indicateur --with-system-v8 n'a pas fonctionné pour moi... j'ai Donc enlevé mon système avec son v8

brew uninstall v8

Et la course

gem install libv8

Si vous avez déjà exécuté gem install libv8 avec le système v8 drapeau assurez-vous de désinstaller ce joyau version (le faire en exécutant gem uninstall libv8). La chose importante est que vous ne devriez pas utiliser celui fourni par infusion, il ne semble pas fonctionner dans les Mavericks (il est installé bien et bundler vous indique que votre bundle est complet, mais votre application échoue quand il essaie d'utiliser la v8).

Pour résumer la réponse, en procédant de la manière suivante fonctionné pour moi:

brew install apple-gcc42

sudo ln -s /usr/local/Cellar/apple-gcc42/4.2.1-5666.3/bin/gcc-4.2 /usr/bin/gcc

sudo ln -s /usr/local/Cellar/apple-gcc42/4.2.1-5666.3/bin/g++-4.2 /usr/bin/g++

sudo ln -s /usr/local/Cellar/apple-gcc42/4.2.1-5666.3/bin/cpp-4.2 /usr/bin/cpp

brew uninstall v8

gem install libv8

gem install therubyracer

10voto

Alvaro Points 81

J'ai eu le même problème, cela fonctionne pour moi:

therubyracer (0.10.2) & libv8 (3.3.10.4)

Tout d'abord:

  • brew install apple-gcc42
  • vous devez lier tous les fichiers binaires des compilateurs (gcc, cpp, g++) /usr/local/Cellar/apple-gcc42/4.2.1-5666.3/bin/<compiler>

Après, vous pouvez essayer ceci:

  • brew install v8
  • gem install libv8 -v '3.3.10.4' -- --with-system-v8
  • gem install therubyracer -v 'therubyracer' ou bundle install dans le répertoire des rails de projet.

7voto

Simon Points 135

J'ai juste eu le même problème et une solution est actuellement à l'utilisation par apple gcc42 au lieu de clang pour compiler les deux joyaux :

brew install apple-gcc42

Et puis vous avez le choix entre faire certains liens symboliques dans /usr/bin pour {gcc,g++,c++} binaires :

sudo ln -s /usr/local/Cellar/apple-gcc42/4.2.1-5666.3/bin/gcc-4.2 /usr/bin/gcc
sudo ln -s /usr/local/Cellar/apple-gcc42/4.2.1-5666.3/bin/g++-4.2 /usr/bin/g++
sudo ln -s /usr/local/Cellar/apple-gcc42/4.2.1-5666.3/bin/cpp-4.2 /usr/bin/cpp

En fait g++ devrait être suffisant.

Ou...vous pouvez exporter des CC/CXX/RPC variables d'environnement avec les chemins correspondant aux fichiers binaires créés par homebrew. C'est sûrement un nettoyeur de solution de contournement.

Une troisième solution est de télécharger Xcode 4.6.3 et l'installer dans les Demandes de dossier. Ensuite, entrez dans le terminal:

sudo xcode-select --switch /Applications/Xcode4.6.3.app/Contents/Developer
gem install therubyracer

Une fois que le gem a été installé, vous pouvez revenir à Xcode 5.0 :

sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer

6voto

M. Scott Ford Points 617

J'ai trouvé une solution qui fonctionne sans installation de apple-gcc42.

Ceci fonctionnera si le message d'erreur que vous obtenez ressemble à ceci:

clang: error: no such file or directory: '/Users/mscottford/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/libv8-3.3.10.4/lib/libv8/build/v8/libv8.a'

Ensuite, vous devriez être en mesure de faire ce qui suit:

brew install v8
bundle install 
# after failing create link from brew installed v8 to error location
ln -s /usr/local/Cellar/v8/3.21.17/lib/libv8_base.x64.a /Users/mscottford/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/libv8-3.3.10.4/lib/libv8/build/v8/libv8.a
bundle install

Source: https://github.com/cowboyd/therubyracer/issues/277#issuecomment-27734348

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X