Установка образа libv8 на OS X 10.9+

Я пытаюсь установить libv8 3.16.14.3, но получаю сообщение об ошибке в OSX Mavericks, используя последние стабильные rvm и ruby-1.9.3-p125.

Это результат запуска команды "gem install libv8":

~/src(branch:master) » gem install libv8
Fetching: libv8-3.16.14.3.gem (100%)
Building native extensions.  This could take a while...
ERROR:  Error installing therubyracer:
  ERROR: Failed to build gem native extension.

    /Users/me/.rvm/rubies/ruby-1.9.3-p125/bin/ruby extconf.rb
creating Makefile
Compiling v8 for x64
Using python 2.7.5
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Unable to find a compiler officially supported by v8.
It is recommended to use GCC v4.4 or higher
Using compiler: g++
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Unable to find a compiler officially supported by v8.
It is recommended to use GCC v4.4 or higher
libtool: unrecognized option `-static'
libtool: Try `libtool --help' for more information.
make[1]: *** [/Users/me/.rvm/gems/[email protected]/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/libpreparser_lib.a] Error 1
make: *** [x64.release] Error 2
/Users/me/.rvm/gems/[email protected]/gems/libv8-3.16.14.3/ext/libv8/location.rb:36:in `block in verify_installation!': libv8 did not install properly, expected binary v8 archive '/Users/me/.rvm/gems/[email protected]/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/tools/gyp/libv8_base.a'to exist, but it was not found (Libv8::Location::Vendor::ArchiveNotFound)
  from /Users/me/.rvm/gems/[email protected]/gems/libv8-3.16.14.3/ext/libv8/location.rb:35:in `each'
  from /Users/me/.rvm/gems/[email protected]/gems/libv8-3.16.14.3/ext/libv8/location.rb:35:in `verify_installation!'
  from /Users/me/.rvm/gems/[email protected]/gems/libv8-3.16.14.3/ext/libv8/location.rb:26:in `install!'
  from extconf.rb:7:in `<main>'
GYP_GENERATORS=make \
  build/gyp/gyp --generator-output="out" build/all.gyp \
                -Ibuild/standalone.gypi --depth=. \
                -Dv8_target_arch=x64 \
                -S.x64  -Dv8_enable_backtrace=1 -Dv8_can_use_vfp2_instructions=true -Darm_fpu=vfpv2 -Dv8_can_use_vfp3_instructions=true -Darm_fpu=vfpv3
  CXX(target) /Users/me/.rvm/gems/[email protected]/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/preparser_lib/src/allocation.o
  CXX(target) /Users/me/.rvm/gems/[email protected]/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/preparser_lib/src/atomicops_internals_x86_gcc.o
  CXX(target) /Users/me/.rvm/gems/[email protected]/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/preparser_lib/src/bignum.o
  CXX(target) /Users/me/.rvm/gems/[email protected]/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/preparser_lib/src/bignum-dtoa.o
  CXX(target) /Users/me/.rvm/gems/[email protected]/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/preparser_lib/src/cached-powers.o
  CXX(target) /Users/me/.rvm/gems/[email protected]/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/preparser_lib/src/conversions.o
  CXX(target) /Users/me/.rvm/gems/[email protected]/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/preparser_lib/src/diy-fp.o
  CXX(target) /Users/me/.rvm/gems/ruby-[email protected]/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/preparser_lib/src/dtoa.o
  CXX(target) /Users/me/.rvm/gems/[email protected]/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/preparser_lib/src/fast-dtoa.o
  CXX(target) /Users/me/.rvm/gems/[email protected]/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/preparser_lib/src/fixed-dtoa.o
  CXX(target) /Users/me/.rvm/gems/[email protected]/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/preparser_lib/src/once.o
  CXX(target) /Users/me/.rvm/gems/[email protected]/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/preparser_lib/src/preparse-data.o
  CXX(target) /Users/me/.rvm/gems/[email protected]/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/preparser_lib/src/preparser.o
  CXX(target) /Users/me/.rvm/gems/[email protected]/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/preparser_lib/src/preparser-api.o
  CXX(target) /Users/me/.rvm/gems/[email protected]/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/preparser_lib/src/scanner.o
  CXX(target) /Users/me/.rvm/gems/[email protected]/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/preparser_lib/src/strtod.o
  CXX(target) /Users/me/.rvm/gems/[email protected]/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/preparser_lib/src/token.o
  CXX(target) /Users/me/.rvm/gems/[email protected]/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/preparser_lib/src/unicode.o
  CXX(target) /Users/me/.rvm/gems/[email protected]/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/preparser_lib/src/utils.o
  LIBTOOL-STATIC /Users/me/.rvm/gems/[email protected]/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/libpreparser_lib.a


Gem files will remain installed in /Users/me/.rvm/gems/[email protected]/gems/libv8-3.16.14.3 for inspection.
Results logged to /Users/me/.rvm/gems/[email protected]/gems/libv8-3.16.14.3/ext/libv8/gem_make.out

Ответ 1

Это связано с тем, что OS X 10.9+ использует версию 4.8 GCC. Это официально не поддерживается в более старых версиях libv8, как указано в запросе на pull (https://github.com/cowboyd/libv8/pull/95). Попробуйте поднять версию libv8 в Gemfile (или) a bundle update должно быть достаточно. Надеюсь, это поможет.

Из libv8 README

Принесите свой собственный V8

Поскольку libv8 является интерфейсом для двигателя V8, используемого therubyracer, вам может потребоваться использовать libv8, даже если у вас уже установлен V8. Если вы хотите использовать свою собственную установку V8, а не использовать ее, используйте опцию --with-system-v8.

Использование RubyGems:

gem install libv8 [-v YOUR_VERSION] - --with-system-v8

Использование Bundler (в вашем Gemfile):

bundle config build.libv8 --with-system-v8

Обратите внимание, что если вы намереваетесь запустить свой собственный V8, вы должны установить как V8, так и его заголовки (найденные в libv8-dev для дистрибутивов Debian).

Принесите свой собственный компилятор

Вы можете указать компилятор по вашему выбору, либо задав переменную среды CXX перед компиляцией, либо добавив параметр -with-cxx = в конфигурацию пучка:

bundle config build.libv8 --with-cxx = clang++

Edit:

Если этот вопрос вызван therubyracer, попробуйте следующее, предложенное rider_on_rails здесь

gem удалить libv8

gem install therubyracer -v YOUR_RUBY_RACER_VERSION

gem install libv8 -v YOUR_VERSION - --with-system-v8

Ответ 2

Фактически вы можете установить эту версию на Mavericks:

gem install libv8 -v 3.11.8.17 -- --with-system-v8

Я могу подтвердить, что это работает с rbenv и ruby ​​1.9.3p448

Ответ 3

El Capitan Решение для меня:

$ brew install v8
$ gem install libv8 -v REQUIRED_LIBV8_VERSION -- --with-system-v8

Где REQUIRED_LIBV8_VERSION для меня было 3.16.14.7, но вам нужно проверить, какая из них вам нужна в вашем комплекте (это было для рельсов 4.2.5)

Вам также может потребоваться выполнить приведенные выше команды в качестве суперпользователя (если ваши драгоценные камни и системные библиотеки являются глобальными)

Ответ 4

Когда я попробовал принятый ответ, libv8 будет успешно установлен с gem install libv8, но bundle install завершится с ошибкой в ​​libv8. Я думаю, что bundle install пытался установить другую версию libv8. Я смог найти решение, которое сработало для меня.

Мне нужен libv8, потому что от него зависит therubyracer. Чтобы установить его, я заметил версию, которая не была установлена ​​в журнале gem_make.out для therubyracer. (Путь для журнала gem_make.out будет в сообщении об ошибке.) В моем случае это было 3.16.14.7. (Эта версия, вероятно, со временем изменится, если вы читаете эти три года.) Затем я сделал это:

gem install libv8 -v 3.16.14.7 -- --with-v8-lib < - отметить другой флаг из принятого ответа

который позволил этому работать:

gem install therubyracer

что позволило мне завершить мой bundle install.

Это работало для меня на OSX Yosemite.

Ответ 5

https://github.com/cowboyd/therubyracer/issues/339

Решение jasonlynes, найденное на этой ссылке, сделало трюк для меня. ничего другого не получилось.

brew install homebrew/versions/v8-315
brew link --overwrite v8-315 --force
gem install libv8 -v '3.16.14.13' -- --with-system-v8
gem install therubyracer -v '0.12.2' -- --with-system-v8

Ответ 7

Это работало отлично для меня:

Попробуйте установить этот предварительно скомпилированный камень:

https://dl.dropboxusercontent.com/u/7919548/gems/libv8/libv8-3.11.8.17-x86_64-darwin-13.gem(SHA1: 5ce07aaf4085fff5a5e10fe018fd6b22021bef3b)

Или, если вы предпочитаете создавать свои собственные:

  git clone https://github.com/cowboyd/libv8.git
  cd libv8
  git checkout 3.11
  bundle install
  bundle exec rake clean build binary
  gem install pkg/libv8-3.11.8.17-x86_64-darwin-13.gem

Источник: https://github.com/cowboyd/libv8/issues/107

Благодаря Felix Bünemann для исправления!

Ответ 8

У меня была такая же проблема, когда я обновился от OSX Mountain Lion до OSX Mavericks. Принятый ответ работал на libv8, но не тогда, когда я отправился связывать установку драгоценного камня.

Модификация с ruby-1.8.7-p354 на ruby-1.8.7-375 сделала трюк для меня. libv8 (3.16.14.3-x86_64-darwin-13) и самоцветов (0.12.0) установлены без проблем.

Предполагая, что вы используете rbenv:

rbenv versions
  system
  * 1.8.7-p354
  2.0.0-rc2

rbenv uninstall 1.8.7-p354
rbenv install 1.8.7-p375

rbenv versions
  system
  * 1.8.7-p375
  2.0.0-rc2

bundle install

Ответ 9

Я попробовал ряд решений, изложенных в предыдущих ответах, но обнаружил, что запуск пакета (для установки других, отсутствующих драгоценных камней) попытается повторно скомпилировать libv8 (несмотря на то, что он уже успешно установил его с помощью --with-system-v8) и, таким образом, страдает от та же проблема.

В конце концов, я обнаружил, что удаление драгоценного камня libv8, извлечение gem файла из rubygems, а затем вручную установка файла .gem с флагом --with-system-v8 работала для меня.

то есть.

gem uninstall libv8
gem fetch libv8 -v LIBV8_VERSION
gem install libv8-LIBV_VERSION.gem -- --with-system-v8
bundle

Благодаря Ответ Гаурава Агарвала за то, что он меня направил по правильному пути!

Ответ 10

Вы можете выполнить ручную сборку и установку gem с помощью метода, указанного на сайте libv8 github.

Ответ 11

В MAC-Yosemite с средой RVM и версией ruby-2.1.1

gem install libv8 -v 3.16.14.3 -- --with-v8-lib gem install therubyracer

Он работает с помощью команды выше, может подтвердить это.

Ответ 12

То, что действительно работало для меня, - это обновление рубина до версии 2.2.0, удаление Gemfile.lock и сборка снова.

Работал как шарм!

Ответ 13

Это то, что сработало для меня.

замените 3.16.14.7 на свою версию.

bundle install
gem install libv8 -v '3.16.14.7' -- --with-system-v8

bundle install
gem uninstall libv8 -v '3.16.14.7' -- --with-system-v8

brew install homebrew/dupes/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

bundle install

Ответ 14

Я столкнулся с аналогичной проблемой в El Cap. Вот что я сделал.

brew tap homebrew/dupes
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 install libv8 -v 3.11.8.17 -- --with-system-v8

Ответ 15

Я использовал бета-версию Xcode для другого проекта и забыл. Отключить с помощью xcode-select. Что-то вроде:

sudo xcode-select --switch /Applications/Xcode.app/

Ответ 16

Я обновился до macOS Catalina @10.15 и ruby 2.6.5. Через некоторое время установили libv8 и therubyracer для повторной установки, хотя я бы порекомендовал пока не обновлять macOS (я слышал, что ruby должно подойти).

Сначала мне пришлось обновить XCode

  1. xcode-select --install

Я использовал rbenv для обновления ruby и вручную установил версию ruby в /Users/<username>/.rbenv/version на 2.6.5. Хотя это не должно иметь значения, если ваш проект содержит файл .ruby-version.

Затем я очистил любую версию, установленную для libv8 (обычно в /usr/local/opt/): brew uninstall v8, brew uninstall [email protected]

  1. brew install [email protected]

Теперь, следуя https://github.com/cowboyd/libv8#do-i-get-a-binary, я установил

  1. gem install libv8 -v '3.16.14.19' -- --with-system-v8

и затем мог запустить bundle install без ошибок.

Ответ 17

Удалить из Gemfile:

gem 'therubyracer',: platform = > : ruby ​​