Beim Versuch, therubyracer mit "gem install therubyracer -v '0.10.2'" auf Außenseitern zu installieren, wird folgende Fehlermeldung angezeigt:
/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
Kann mir jemand helfen, herauszufinden, wie ich dieses Juwel zum Laufen bringen kann? Ich habe die Befehlszeilentools installiert.
ruby-on-rails
macos
gem
therubyracer
osx-mavericks
user2711889
quelle
quelle
homebrew
? Versuchen Sie, v8 mit zu installieren,brew install v8
bevor Sie gemAntworten:
Wenn Sie sich für eine neuere Version entscheiden
therubyracer
Edelsteinversion dieses Problem nicht mehr aufAndernfalls:
quelle
brew tap homebrew/dupes
behebt "Fehler: Keine verfügbare Formel für apple-gcc42"Nach einigem Kämpfen habe ich es endlich zum Laufen gebracht ... danke an Simon und Alvaro.
Ich muss jedoch eines 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 System v8-Flag ausgeführt haben, müssen Sie diese Gem-Version deinstallieren (führen Sie sie ausgem uninstall libv8
). Das Wichtigste ist, dass Sie das von Brew bereitgestellte nicht verwenden sollten. Es scheint in Mavericks nicht zu funktionieren (es wird gut installiert und der Bundler meldet, dass Ihr Bundle vollständig ist, aber Ihre App schlägt fehl, wenn er versucht, v8 zu verwenden ).Um die Antwort zusammenzufassen, hat Folgendes für mich funktioniert:
quelle
brew update
, der kommt und diese Pfade dreht, wird Sie in einem kaputten Zustand zurücklassen.Ich hatte das gleiche Problem, das funktioniert bei mir:
Zuerst:
brew install apple-gcc42
gcc
,cpp
,g++
) zu/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'
oderbundle install
in das Verzeichnis des Rails-Projekts.quelle
apple-gcc42: This formula either does not compile or function as expected on macOS
Mein macOS ist 10.12.6Ich hatte gerade das gleiche Problem und eine Lösung besteht derzeit darin, apple-gcc42 anstelle von clang zu verwenden, um beide Edelsteine zu kompilieren:
Und dann haben Sie die Wahl zwischen einigen Symlinks in / usr / bin für {gcc, g ++, c ++} Binärdateien:
In der Tat sollte g ++ genug sein.
Oder ... Sie können CC / CXX / CPP-Umgebungsvariablen mit Pfaden exportieren, die den von Homebrew erstellten Binärdateien entsprechen. Das ist sicherlich eine sauberere Problemumgehung.
Eine dritte Lösung ist Xcode 4.6.3 herunterladen und im Installations Anwendungen Ordner. Geben Sie dann in das Terminal ein:
Sobald der Edelstein installiert wurde, können Sie wieder zu Xcode 5.0 wechseln:
quelle
Ich habe eine Problemumgehung gefunden, die ohne die Installation von apple-gcc42 funktioniert hat.
Dies funktioniert, wenn die Fehlermeldung wie folgt aussieht:
Dann sollten Sie in der Lage sein, Folgendes zu tun:
Quelle: https://github.com/cowboyd/therubyracer/issues/277#issuecomment-27734348
quelle
ln -s /usr/local/Cellar/v8/3.21.17/lib/libv8_base.x64.a ~/.rvm/gems/ruby-1.9.3-p327/gems/libv8-3.3.10.4/lib/libv8/build/v8/libv8.a
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 manuell mit dem Einrichten symbolischer Links für die GCC-Binärdateien befassen müssen. Der
port select
Befehl erledigt das für Sie. Wenn Sie MacPorts seit der Installation von Mavericks nicht aktualisiert haben, führen Sie asudo port selfupdate
. Versuchen Sie Folgendes, wenn MacPorts auf dem neuesten Stand ist:Im Allgemeinen
sudo port select gcc [version]
funktioniert dieses Verfahren ( ) immer dann, wenn Sie eine bestimmte GCC-Version anstelle der von Xcode installierten verwenden möchten (Apple LLVM v5 für 10.9 Mavericks / Xcode 5).quelle
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
Therubyracer benötigt später gcc
Gemfile
verwenden
bundle
stattgem install therubyracer
quelle
bundle install
nach Tagen des Versuchs und Irrtums endlich vorbei . Das einzige, was ich anders gemacht habe, war, alle Entwicklertools zu deinstallieren, die von installiert wurden,brew
bisgcc --version
gemeldet wurde, dass es sich um die Apple LLVM-Version handelt und mit Xcode konfiguriert wurde. Dann habe ich das vorhandene/usr/bin/gcc
(et al.) Vor dem Symlinking des Apple-gcc42 entfernt libs, anstatt gcc49 zu installieren (als ich das letzte Mal versuchte, es zu übernehmen, um es zu konfigurieren), habe ich einfach die ursprünglichen gcc-, g ++ - und cpp-libs zurückkopiert. Angesichts der Tatsache, dass ich 3 Dutzend verschiedene Möglichkeiten ausprobiert habe, um die für mich funktionierende zu finden, YMMVDies sollte eine ausfallsichere und saubere Methode (keine Symlinks) sein, um den Theryracer 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
Installieren Sie Xcode (falls Sie noch keine dieser Versionen haben) 6.1.1, 6.2-Beta oder 6.3-Beta und (diese wird benötigt) 4.6.3
gem uninstall libv8
wenn Sie es noch nicht getan habenWechseln Sie zu Xcode 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 an Ihre Version von therubyracer gebunden istWechseln Sie zu Xcode 6.1.1, 6.2-Beta oder 6.3-Beta (oder wenn Sie Ihre aktuelle Installation von Xcode ausprobieren möchten, passen Sie 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.quelle
sudo xcode-select --switch /Applications/Xcode4.6.3.app/Contents/Developer
und führen Sie danngem install libv8 -v '3.3.10.4'
erhalte ich:unable to locate xcodebuild, please make sure the path to the Xcode folder is set correctly!
Was mache ich falsch gemacht?Ich hatte einen fast identischen Fehler beim Versuch, therubyracer 0.12.0 zu installieren, damit es mit libv8 funktioniert. Das hat bei mir funktioniert:
quelle
Ich hatte das gleiche Problem, als ich ein Upgrade von OSX Mountain Lion auf OSX Mavericks durchführte.
Ein Upgrade von Ruby-1.8.7-p354 auf Ruby-1.8.7-375 hat mir geholfen.
Versuchen Sie vielleicht, ein Upgrade von Ruby 1.9.3-p194 auf rc1 durchzuführen (1.9.3 liegt jetzt über p484).
Angenommen, Sie verwenden rbenv:
quelle
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
x86_64-darwin-13
stattx86_64-darwin-14
für Yosemite bekommen.So installieren Sie Ruby I.
rvm remove ruby-2.1.1
rvm reinstall --disable-binary 2.1
Dann konnte ich
bundle install
fehlerfrei laufen , nachdem ich alle oben genannten Lösungen ausprobiert hatte.quelle
Was ich getan habe, war auf Osx Mavericks:
Dann:
Diese Prozedur hat eine Binärversion von libv8 heruntergeladen und installiert.
quelle