webentwicklung-frage-antwort-db.com.de

"gem install therubyracer -v '0.10.2'" bei nicht installierten osx mavericks

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.

90
user2711889

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
241
Julian Popov

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 ).

m die Antwort zusammenzufassen: Für mich hat Folgendes funktioniert:

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
16
damianmr

Ich hatte das gleiche Problem, das funktioniert bei mir:

therubyracer (0.10.2) & libv8 (3.3.10.4)

Als allererstes:

  • brew install Apple-gcc42
  • sie müssen alle Binärdateien der Compiler verknüpfen (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.
10
Alvaro

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
7
Simon

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

6
M. Scott Ford

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.

3
jshkol

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

3
Eugene

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.

3
Travis

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
1
Javid Jamae

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
0
nelsonenzo

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

  1. Vollständig entfernte alte Version: rvm remove Ruby-2.1.1
  2. Von der Quelle neu installiert (die --disable-binary verwendet keine vorkompilierten Binärdateien und erzwingt einen Build): rvm reinstall --disable-binary 2.1

Dann konnte ich bundle install ohne Fehler, nachdem alle oben genannten Lösungen ausprobiert wurden.

0
Moemars