1. ホーム
  2. ruby

[解決済み] therubyracer - Gem::Ext::BuildError: ERROR: gem ネイティブ拡張のビルドに失敗しました

2023-06-13 09:02:59

質問

Mavericksで以下のgemのバージョンをインストールしようとしています。

  • libv8 (3.16.14.3)
  • ザルビーレーサー (0.12.1)

明らかに、therubyracer gems は libv8 に依存しています。

1) libv8 のインストール

libv8 とは何ですか?私のちょっとした調査では、Google Chrome で使用されるある種の javascript ライブラリであることが示されているようです。

インストールがうまくいかなかったのですが この素晴らしい記事 には、私のエラーと、それを回避する方法についてのよく説明された答えの両方がありました。

そこで私は libv8

gem install libv8 -- --with-system-v8

これはgemをインストールしますが、gemに付属しているバージョンではなく、v8ライブラリのローカルシステムのインストールを使用するという理解でよろしいでしょうか。いずれにせよ、それは成功しました。

2) therubyracerのインストール

次のステップで、私はインストールに苦労しました。 therubyracer gem をインストールするのに苦労しました。このgemが何をするものなのかはよく分かりませんが、私がやろうとしているrailsプロジェクトの依存関係であることだけは確かです。 bundle install .

以下のようなエラーが出ます。

Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

    /Users/jeeves.butler/.rvm/rubies/ruby-1.9.2-p290/bin/ruby extconf.rb 
checking for main() in -lpthread... yes
checking for main() in -lobjc... yes
checking for v8.h... no
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers.  Check the mkmf.log file for more
details.  You may need configuration options.

Provided configuration options:
    --with-opt-dir
    --with-opt-include
    --without-opt-include=${opt-dir}/include
    --with-opt-lib
    --without-opt-lib=${opt-dir}/lib
    --with-make-prog
    --without-make-prog
    --srcdir=.
    --curdir
    --ruby=/Users/jeeves.butler/.rvm/rubies/ruby-1.9.2-p290/bin/ruby
    --with-pthreadlib
    --without-pthreadlib
    --with-objclib
    --without-objclib
    --enable-debug
    --disable-debug
    --with-v8-dir
    --without-v8-dir
    --with-v8-include
    --without-v8-include=${v8-dir}/include
    --with-v8-lib
    --without-v8-lib=${v8-dir}/lib
/Users/jeeves.butler/.rvm/gems/ruby-1.9.2-p290/gems/libv8-3.16.14.3/ext/libv8/location.rb:50:in 
'configure': You have chosen to use the version of V8 found 
on your system (Libv8::Location::System::NotFoundError)
and *not* the one that is bundled with the libv8 rubygem. However,
it could not be located. please make sure you have a version of
v8 that is compatible with 3.16.14.3 installed. You may
need to special --with-v8-dir options if it is in a non-standard
location

thanks,
The Mgmt

    from /Users/jeeves.butler/.rvm/gems/ruby-1.9.2-p290/gems/libv8-3.16.14.3/lib/libv8.rb:7:in `configure_makefile'
    from extconf.rb:32:in `<main>'

extconf failed, exit code 1

Gem files will remain installed in /Users/jeeves.butler/.rvm/gems/ruby-1.9.2-p290/gems/therubyracer-0.12.1 for inspection.
Results logged to /Users/jeeves.butler/.rvm/gems/ruby-1.9.2-p290/extensions/x86_64-darwin-13/1.9.1/therubyracer-0.12.1/gem_make.out

私が調べたところでは、インストールするために選んだのは libv8 で提供されたものではなく、ローカルの V8 ライブラリを使用してインストールしました。 libv8 で提供されるものではなく、私のローカル V8 ライブラリを使用していましたが、現在ではそのローカル インストールを見つけることができませんでした。

  • V8 が本当にインストールされているかどうかを確認し、それを見つけるにはどうすればよいですか。
  • 指定されたフラグをいくつか試しましたが、どれも gem を正しいインストール ディレクトリに指し示すようには見えませんでした。
  • これは別のトピックかもしれませんが、何が extconf.rb ? いくつかの場所で見かけたことがあります。そして、それは何をしようとしているかというと gcc コンパイラを具体的にどうしようとしているのか?

ありがとうございます!

EDITです。

  1. 私が試したのは この解決策 を使ってアンインストールし、再インストールしてみました。 brew install . それは同様にいくつかの同様の質問で言及されていた。運がない。

  2. も試してみましたが CC , CXX そして CPP のように環境変数を指定します。 ここで を読み込んでいたので、その効果はないと思いますが。 gcc v4.6 コンパイラを拾っていたからです。

どのように解決するのですか?

この手順は私のために働いた。

OS: Maverick ルビー: 2.1.1

gem uninstall libv8
gem install therubyracer -v '0.11.3'
gem install libv8 -v '3.11.8.13' -- --with-system-v8