Próbuję zainstalować therubyracer na mavericks za pomocą "gem install therubyracer -v '0.10.2'", ale otrzymuję następujący błąd:
/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
czy ktoś może mi pomóc dowiedzieć się, jak uruchomić ten klejnot? Mam zainstalowane narzędzia wiersza poleceń.
ruby-on-rails
macos
gem
therubyracer
osx-mavericks
user2711889
źródło
źródło
homebrew
? Spróbuj zainstalować wersję 8, używającbrew install v8
przed instalacją gemOdpowiedzi:
Jeśli zdecydujesz się użyć nowszej
therubyracer
wersji klejnotów, nie będziesz już mieć tego problemuInaczej:
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
źródło
brew tap homebrew/dupes
naprawia „Błąd: brak dostępnej formuły dla apple-gcc42”Więc w końcu udało mi się to po kilku zmaganiach ... dzięki Simonowi i Alvaro.
Mam jednak jedną rzecz do dodania, użycie flagi --with-system-v8 nie działa dla mnie ... Więc usunąłem swój system v8 z
brew uninstall v8
I bieg
gem install libv8
Jeśli już uruchomiłeś
gem install libv8
system z flagą v8 systemu, pamiętaj, aby odinstalować tę wersję gem (zrób to uruchamiającgem uninstall libv8
). Ważną rzeczą jest to, że nie powinieneś używać tego dostarczonego przez brew, wydaje się, że nie działa w Mavericks (jest dobrze zainstalowany, a bundler zgłosi, że pakiet jest kompletny, ale twoja aplikacja zawiedzie, gdy spróbuje użyć v8 ).Podsumowując odpowiedź, wykonałem następujące czynności:
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
źródło
brew update
który nadejdzie i obróci te ścieżki, pozostawi cię w zepsutym stanie.Miałem ten sam problem, to działa u mnie:
Po pierwsze:
brew install apple-gcc42
gcc
,cpp
,g++
) do/usr/local/Cellar/apple-gcc42/4.2.1-5666.3/bin/<compiler>
Następnie możesz spróbować tego:
brew install v8
gem install libv8 -v '3.3.10.4' -- --with-system-v8
gem install therubyracer -v 'therubyracer'
lubbundle install
do katalogu projektu railsów.źródło
apple-gcc42: This formula either does not compile or function as expected on macOS
Mój macOS to 10.12.6Po prostu miałem ten sam problem i jednym rozwiązaniem jest obecnie użycie apple-gcc42 zamiast clang do kompilacji obu klejnotów:
brew install apple-gcc42
Następnie możesz wybrać pomiędzy wykonaniem kilku dowiązań symbolicznych w / usr / bin dla plików binarnych {gcc, g ++, c ++}:
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
W rzeczywistości g ++ powinno wystarczyć.
Lub ... możesz wyeksportować zmienne środowiskowe CC / CXX / CPP ze ścieżkami odpowiadającymi plikom binarnym utworzonym przez homebrew. To z pewnością czystsze obejście.
Trzecim rozwiązaniem jest pobranie Xcode 4.6.3 i zainstalowanie go w folderze Aplikacje . Następnie wprowadź w terminalu:
sudo xcode-select --switch /Applications/Xcode4.6.3.app/Contents/Developer gem install therubyracer
Po zainstalowaniu klejnotu możesz wrócić do Xcode 5.0:
sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer
źródło
Znalazłem obejście, które działało bez instalowania Apple-gcc42.
To zadziała, jeśli wyświetlany komunikat o błędzie wygląda następująco:
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'
Następnie powinieneś być w stanie wykonać następujące czynności:
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
Źródło: https://github.com/cowboyd/therubyracer/issues/277#issuecomment-27734348
źródło
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
Jak sugerowano w wielu odpowiedziach, najłatwiejszą rzeczą do zrobienia jest skompilowanie natywnych rozszerzeń Ruby Racer z Apple GCC 4.2 (zamiast wersji zainstalowanej z Xcode).
Jeśli używasz MacPorts, nie powinieneś ręcznie zajmować się konfigurowaniem dowiązań symbolicznych dla plików binarnych GCC.
port select
Komenda zrobi to za Ciebie. Jeśli nie zaktualizowałeś MacPorts od czasu zainstalowania Mavericks, wykonajsudo port selfupdate
. Mając aktualne MacPorts, wypróbuj następujące rozwiązania:# 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
Ogólnie ta procedura (
sudo port select gcc [version]
) będzie działać zawsze, gdy będziesz chciał użyć określonej wersji GCC zamiast tej zainstalowanej przez Xcode (Apple LLVM v5 dla 10.9 Mavericks / Xcode 5).źródło
Udało mi się zainstalować therubyracer 0.12 i libv8 3.16.14.3 na Ruby 2.0.0p353 i OS X 10.9
libv8 wymaga 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
therubyracer wymaga później 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
użyj
bundle
zamiastgem install therubyracer
źródło
bundle install
po wielu dniach prób i błędów. Jedyną rzeczą, którą zrobiłem inaczej, było odinstalowanie wszystkich narzędzi programistycznych, które zostały zainstalowane przez,brew
dopóki niegcc --version
poinformowałem, że jest to wersja Apple LLVM i została skonfigurowana z Xcode, a następnie przeniosłem istniejący/usr/bin/gcc
(i inni) przed dowiązaniem symbolicznym apple-gcc42 libs, zamiast instalować gcc49 (ostatnim razem, gdy próbowałem, zajęło to konfigurację), po prostu skopiowałem z powrotem oryginalne biblioteki gcc, g ++ i cpp. Biorąc pod uwagę, że wypróbowałem 3 tuziny różnych sposobów, aby znaleźć ten, który zadziałał dla mnie, YMMVPowinien to być bezpieczny i czysty sposób (bez dowiązań symbolicznych) na instalację programurubyracer dla każdego, kto ma problemy.
Zaczerpnięte z: gem install therubyracer -v 0.11.4 kończy się niepowodzeniem w systemie OS X 10.10
zainstaluj Xcode (jeśli nie masz jeszcze jednej z tych wersji) 6.1.1, 6.2-beta lub 6.3-beta i (ta jest wymagana) 4.6.3
gem uninstall libv8
jeśli jeszcze tego nie zrobiłeśprzejdź do Xcode 4.6.3
sudo xcode-select --switch /Applications/Xcode4.6.3.app/Contents/Developer
gem install libv8 -v '3.11.8.17'
Lub jakakolwiek wersja jest powiązana z twoją wersją listy rankingowejprzełącz na Xcode 6.1.1, 6.2-beta lub 6.3-beta (lub jeśli chcesz wypróbować obecną instalację Xcode, dostosuj tę linię, potwierdziłem wszystkie 3 z tych działań)
sudo xcode-select --switch /Applications/Xcode6.1.1.app/Contents/Developer
gem install therubyracer -v '0.11.4'
lub wersję, którą próbujesz zainstalować.źródło
sudo xcode-select --switch /Applications/Xcode4.6.3.app/Contents/Developer
a następnie uruchamiamgem install libv8 -v '3.3.10.4'
, otrzymuję:unable to locate xcodebuild, please make sure the path to the Xcode folder is set correctly!
Co robię niepoprawnie?Miałem prawie identyczny błąd, kiedy próbowałem zainstalować therubyracer 0.12.0, aby działał z libv8. To zadziałało dla mnie:
$ 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
źródło
Miałem ten sam problem podczas aktualizacji z OSX Mountain Lion do OSX Mavericks.
Uaktualnienie z ruby-1.8.7-p354 do ruby-1.8.7-375 załatwiło sprawę.
Może spróbuj zaktualizować z Ruby 1.9.3-p194 do rc1 (1.9.3 jest teraz powyżej p484)
zakładając, że używasz rbenv:
rbenv install 1.9.3-rc1 rbenv rehash rbenv global 1.9.3-rc1 bundle install
źródło
Miałem ten problem po aktualizacji z Mavericks do Yosemite. Problem polegał na tym, że skompilowałem moją wersję Ruby ze starą wersją OSX.
Gdybym pobiegł
ruby -rubygems -e 'puts Gem::Platform.new(RUBY_PLATFORM)'
Dostałbym
x86_64-darwin-13
zamiastx86_64-darwin-14
Yosemite.Aby ponownie zainstalować Ruby I
rvm remove ruby-2.1.1
rvm reinstall --disable-binary 2.1
Potem mogłem działać
bundle install
bez błędów po wypróbowaniu wszystkich powyższych rozwiązań.źródło
To, co zrobiłem, to na OSX Mavericks:
git clone [email protected]:cowboyd/therubyracer.git
Następnie:
gem build therubyracer.gemspec gem install therubyracer-0.12.1.gem
Ta procedura pobrała binarną wersję libv8 i zainstalowała ją.
źródło