Wenn ich versuche, therubyracer mit "gem install therubyracer -v '0.10.2'" auf Außenseitern zu installieren, erhalte ich den folgenden Fehler:
/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/[email protected]/gems/libv8-3.3.10.4/lib/libv8/build/v8/libv8.a'
make: *** [v8.bundle] Error 1
kann mir jemand helfen, herauszufinden, wie ich dieses Juwel zum Laufen bringen kann? Ich habe die Kommandozeilen-Tools installiert.
Wenn Sie sich für eine neuere Version von therubyracer
gem entscheiden, tritt dieses Problem nicht mehr auf
Andernfalls:
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
Also habe ich es endlich geschafft, nach einigem Ringen ... danke an Simon und Alvaro.
Ich muss jedoch eine Sache hinzufügen: Die Verwendung des Flags --with-system-v8 hat bei mir nicht funktioniert ... Also habe ich mein System v8 mit entfernt
brew uninstall v8
Und der Lauf
gem install libv8
Wenn Sie bereits gem install libv8
Mit dem Flag system v8 ausgeführt haben, müssen Sie diese Gem-Version deinstallieren (indem Sie gem uninstall libv8
Ausführen). Wichtig ist, dass Sie nicht das von brew bereitgestellte verwenden, da es in Mavericks anscheinend nicht funktioniert (es wird ordnungsgemäß installiert und der Bundler meldet, dass Ihr Bundle vollständig ist, aber Ihre App schlägt fehl, wenn er versucht, Version 8 zu verwenden ).
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
Ich hatte das gleiche Problem, das funktioniert bei mir:
therubyracer (0.10.2) & libv8 (3.3.10.4)
Als allererstes:
brew install Apple-gcc42
gcc
, cpp
, g++
) bis /usr/local/Cellar/Apple-gcc42/4.2.1-5666.3/bin/<compiler>
Danach können Sie Folgendes versuchen:
brew install v8
gem install libv8 -v '3.3.10.4' -- --with-system-v8
gem install therubyracer -v 'therubyracer'
oder bundle install
in das Verzeichnis des Rails Projekts.Ich hatte gerade das gleiche Problem und eine Lösung ist derzeit Apple-gcc42 anstelle von clang zu verwenden = um beide Edelsteine zu kompilieren:
brew install Apple-gcc42
Und dann haben Sie die Wahl, ob Sie einige Symlinks in/usr/bin für die Binärdateien {gcc, g ++, c ++} erstellen möchten:
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
Tatsächlich sollte g ++ ausreichen.
Oder ... Sie können CC/CXX/CPP-Umgebungsvariablen mit Pfaden exportieren, die den von Homebrew erstellten Binärdateien entsprechen. Das ist sicherlich eine sauberere Lösung.
Eine dritte Lösung besteht darin, Xcode 4.6.3 herunterzuladen und im Ordner Applications zu installieren. Dann geben Sie im Terminal ein:
Sudo xcode-select --switch /Applications/Xcode4.6.3.app/Contents/Developer
gem install therubyracer
Sobald der Edelstein installiert wurde, können Sie zurück zu Xcode 5.0 wechseln:
Sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer
Ich habe eine Problemumgehung gefunden, die ohne die Installation von Apple-gcc42 funktioniert hat.
Dies funktioniert, wenn die Fehlermeldung so aussieht:
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'
Dann sollten Sie in der Lage sein, Folgendes zu tun:
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
Quelle: https://github.com/cowboyd/therubyracer/issues/277#issuecomment-27734348
Wie in vielen Antworten vorgeschlagen, ist es am einfachsten, die nativen Ruby Racer-Erweiterungen mit Apple GCC 4.2 (anstelle der mit Xcode installierten Version) zu kompilieren. .
Wenn Sie MacPorts verwenden, sollten Sie sich nicht mit dem manuellen Einrichten symbolischer Links für die GCC-Binärdateien befassen müssen. Das port select
Befehl erledigt es für Sie. Wenn Sie MacPorts seit der Installation von Mavericks nicht aktualisiert haben, führen Sie einen Sudo port selfupdate
. Versuchen Sie Folgendes, wenn MacPorts auf dem neuesten Stand ist:
# If you don't have it, install the port for Apple's GCC 4.2
Sudo port install Apple-gcc42
# OR
# If you had Apple-gcc42 already (before Mavericks), update it
Sudo port upgrade Apple-gcc42
# Same result as manual symlinking of GCC in other answers
Sudo port select gcc Apple-gcc42 && hash -r
# Install therubyracer, will install libv8 gem dependency
# *note* if you have any existing versions of these gems, remove them
gem install therubyracer
# Restore GCC to system default (optional)
Sudo port select gcc none && hash -r
Im Allgemeinen wird dieses Verfahren (Sudo port select gcc [version]
) funktioniert immer dann, wenn Sie eine bestimmte GCC-Version anstelle der von Xcode (Apple LLVM v5 für 10.9 Mavericks/Xcode 5) installierten Version verwenden möchten.
Ich schaffe es, therubyracer 0.12 und libv8 3.16.14.3 auf Ruby 2.0.0p353 und os x 10.9 zu installieren
libv8 benötigt gcc42
brew install v8
brew install Apple-gcc42
Sudo ln -sf /usr/local/Cellar/Apple-gcc42/4.2.1-5666.3/bin/gcc-4.2 /usr/bin/gcc
Sudo ln -sf /usr/local/Cellar/Apple-gcc42/4.2.1-5666.3/bin/g++-4.2 /usr/bin/g++
Sudo ln -sf /usr/local/Cellar/Apple-gcc42/4.2.1-5666.3/bin/cpp-4.2 /usr/bin/cpp
gem install libv8
der Tubyracer benötigt einen späteren gcc
brew install gcc49
Sudo ln -sf /usr/local/Cellar/gcc49/4.9-20131110/bin/gcc-4.9 /usr/bin/gcc
Sudo ln -sf /usr/local/Cellar/gcc49/4.9-20131110/bin/g++-4.9 /usr/bin/g++
Sudo ln -sf /usr/local/Cellar/gcc49/4.9-20131110/bin/cpp-4.9 /usr/bin/cpp
Gemfile
gem 'therubyracer', :require => 'v8', :platforms => :Ruby
benutze bundle
anstelle von gem install therubyracer
Dies sollte eine ausfallsichere und saubere Methode sein (keine Symlinks), um den Tubyracer für alle zu installieren, die Probleme haben.
Entnommen aus: gem install therubyracer -v 0.11.4 schlägt unter OS X 10.10 fehl
installiere Xcode (falls du noch keine dieser Versionen hast) 6.1.1, 6.2-beta oder 6.3-beta und (diese wird benötigt) 4.6.3
gem uninstall libv8
wenn du es noch nicht getan hast
zu Xcode wechseln 4.6.3
Sudo xcode-select --switch /Applications/Xcode4.6.3.app/Contents/Developer
gem install libv8 -v '3.11.8.17'
Oder welche Version auch immer mit Ihrer Version von therubyracer verknüpft ist
wechsle zu Xcode 6.1.1, 6.2-beta oder 6.3-beta (oder wenn du deine aktuelle Installation von Xcode ausprobieren willst, passe diese Zeile an, ich habe alle 3 dieser Arbeiten bestätigt)
Sudo xcode-select --switch /Applications/Xcode6.1.1.app/Contents/Developer
gem install therubyracer -v '0.11.4'
oder die Version, die Sie installieren möchten.
Ich hatte einen fast identischen Fehler, als ich versuchte, den Tubyracer 0.12.0 zu installieren, damit er mit libv8 funktioniert. Das hat bei mir funktioniert:
$ brew upgrade gcc
$ gem uninstall therubyracer
$ gem uninstall libv8
$ gem install therubyracer -v '0.12.0'
Fetching: therubyracer-0.12.0.gem (100%)
Building native extensions. This could take a while...
Successfully installed therubyracer-0.12.0
1 gem installed
$ gem install libv8 -v '3.16.14.3' -- --with-system-v8
Fetching: libv8-3.16.14.3.gem (100%)
Building native extensions with: '--with-system-v8'
This could take a while...
Successfully installed libv8-3.16.14.3
1 gem installed
Ich hatte das gleiche Problem beim Upgrade von OSX Mountain Lion auf OSX Mavericks.
Ein Upgrade von Ruby-1.8.7-p354 auf Ruby-1.8.7-375 hat mir geholfen.
Vielleicht versuchen Sie ein Upgrade von Ruby 1.9.3-p194 auf rc1 (1.9.3 ist jetzt über p484)
vorausgesetzt, Sie verwenden rbenv:
rbenv install 1.9.3-rc1
rbenv rehash
rbenv global 1.9.3-rc1
bundle install
Ich hatte dieses Problem nach dem Upgrade von Mavericks auf Yosemite. Das Problem war, dass ich meine Ruby Version mit der alten Version von OSX kompiliert habe.
Wenn ich renne
Ruby -rubygems -e 'puts Gem::Platform.new(Ruby_PLATFORM)'
Ich würde bekommen x86_64-darwin-13
anstatt x86_64-darwin-14
für Yosemite.
So installieren Sie Ruby I
rvm remove Ruby-2.1.1
rvm reinstall --disable-binary 2.1
Dann konnte ich bundle install
ohne Fehler, nachdem alle oben genannten Lösungen ausprobiert wurden.