"gem install therubyracer-v '0.10.2' " на osx mavericks не устанавливается
попытка установить therubyracer на mavericks с помощью "gem install therubyracer-v '0.10.2'", но я получаю следующую ошибку:
/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
может ли кто-нибудь помочь мне выяснить, как заставить этот камень работать? У меня установлены инструменты командной строки.
12 ответов
Если вы решите использовать новые therubyracer
версия gem, у вас больше не будет этой проблемы
иначе:
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
так что я, наконец, получил его после некоторых усилий... спасибо Саймону и Альваро.
у меня есть одна вещь, чтобы добавить, хотя, используя флаг --with-system-v8 не работал для меня... Поэтому я удалил свою систему v8 с
brew uninstall v8
и
gem install libv8
если вы уже запустили gem install libv8
С флагом system v8 обязательно удалите эту версию gem (сделайте это, запустив gem uninstall libv8
). Главное, что вы не должны использовать один из них, предоставленный brew, похоже, не работает в Mavericks (он хорошо устанавливается, и bundler сообщит, что ваш пакет завершен, но ваше приложение потерпит неудачу, когда оно попытается использовать v8).
чтобы суммировать ответ, для меня сработало следующее:
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
у меня была такая же проблема, это работает для меня:
therubyracer (0.10.2) & libv8 (3.3.10.4)
прежде всего:
brew install apple-gcc42
- необходимо связать все двоичные файлы компиляторов (
gcc
,cpp
,g++
) к/usr/local/Cellar/apple-gcc42/4.2.1-5666.3/bin/<compiler>
после, вы можете попробовать это:
brew install v8
gem install libv8 -v '3.3.10.4' -- --with-system-v8
-
gem install therubyracer -v 'therubyracer'
илиbundle install
в каталоге железнодорожный проект.
у меня была та же проблема и одно решение-это в настоящее время использовать apple-gcc42 вместо лязгом для компиляции обоих драгоценных камней:
brew install apple-gcc42
и тогда у вас есть выбор между выполнением некоторых символических ссылок в/usr / bin для {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
в самом деле g++ должно быть достаточно.
или...вы можете экспортировать переменные среды CC/CXX/CPP с путями, соответствующими созданным двоичным файлам с помощью доморощенного. Это, конечно, чистое решение.
третье решение-загрузить Xcode 4.6.3 и установить его в приложения. Затем введите в терминале:
sudo xcode-select --switch /Applications/Xcode4.6.3.app/Contents/Developer
gem install therubyracer
после установки gem вы можете вернуться к Xcode 5.0:
sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer
Я нашел обходной путь, который работал без установки apple-gcc42.
это будет работать, если вы получаете сообщение об ошибке выглядит так:
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'
затем вы должны быть в состоянии сделать следующее:
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
источник:https://github.com/cowboyd/therubyracer/issues/277#issuecomment-27734348
как было предложено во многих ответах, проще всего скомпилировать собственные расширения Ruby Racer с Apple GCC 4.2 (вместо версии, установленной с Xcode).
если вы используете MacPorts, вам не нужно вручную настраивать символические ссылки для двоичных файлов GCC. The port select
команда сделает это за вас. Если вы не обновляли MacPorts с момента установки Mavericks, сделайте sudo port selfupdate
. С MacPorts up-to-date, попробуйте следующее:
# 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
In вообще эта процедура (sudo port select gcc [version]
) будет работать в любое время, когда вы хотите использовать определенную версию GCC вместо установленной Xcode (Apple LLVM v5 для 10.9 Mavericks/Xcode 5).
мне удается установить therubyracer 0.12 и libv8 3.16.14.3 на ruby 2.0.0p353 и os x 10.9
libv8 требует 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 требует позже 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
использовать bundle
вместо gem install therubyracer
Это должен быть надежный и чистый способ (без символических ссылок) для установки therubyracer для тех, у кого возникли проблемы.
взято из: gem установить therubyracer-v 0.11.4 не удается на OS X 10.10
установите Xcode (если у вас еще нет одной из этих версий) 6.1.1, 6.2-beta или 6.3-beta и (это необходимо) 4.6.3
gem uninstall libv8
Если вы еще не сделали этого!--6-->
переключиться на Xcode 4.6.3
sudo xcode-select --switch /Applications/Xcode4.6.3.app/Contents/Developer
gem install libv8 -v '3.11.8.17'
или какая бы версия не была привязана к вашей версии therubyracer
переключитесь на Xcode 6.1.1, 6.2-beta или 6.3-beta (или, если вы хотите попробовать текущую установку Xcode, настройте эту строку, я подтвердил все 3 из этих работ)
sudo xcode-select --switch /Applications/Xcode6.1.1.app/Contents/Developer
gem install therubyracer -v '0.11.4'
или версия, которую вы пытаетесь установить.
У меня была почти идентичная ошибка при попытке установить therubyracer 0.12.0, чтобы заставить его работать с libv8. Это сработало для меня:
$ 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
У меня была такая же проблема, когда я обновился с OSX Mountain Lion до OSX Mavericks.
обновление с ruby-1.8.7-p354 до ruby-1.8.7-375 сделало трюк для меня.
возможно, попробуйте обновить ruby 1.9.3-p194 до rc1 (1.9.3 теперь выше p484)
предполагая, что вы используете rbenv:
rbenv install 1.9.3-rc1
rbenv rehash
rbenv global 1.9.3-rc1
bundle install
у меня была эта проблема после обновления с Mavericks до Yosemite. Проблема заключалась в том, что я скомпилировал свою версию Ruby со старой версией OSX.
если бы я побежал
ruby -rubygems -e 'puts Gem::Platform.new(RUBY_PLATFORM)'
Я бы x86_64-darwin-13
вместо x86_64-darwin-14
для Йосемити.
переустановить Ruby I
- полностью удалена старая версия:
rvm remove ruby-2.1.1
- повторно установлен из источника (--disable-binary не использует предварительно скомпилированные двоичные файлы и заставляет build):
rvm reinstall --disable-binary 2.1
тогда я смог бежать bundle install
без ошибок после попытки всех решений выше.
то, что я сделал, было на osx mavericks:
git clone git@github.com:cowboyd/therubyracer.git
затем:
gem build therubyracer.gemspec
gem install therubyracer-0.12.1.gem
эта процедура загрузила двоичную версию libv8 и установила ее.