如何在全新的Mountain Lion系统上安装libv8 ruby gem?

7

我一直在思考这个问题。我遵循了几篇相关帖子的建议,但都没有成功。

我是从Mountain Lion的最新安装开始的,安装了命令行工具,并通过Homebrew安装了gcc-4.2和将符号链接添加到/usr/bin/gcc-4.2等其他文章中,成功安装了Ruby 1.8.7。

但现在,我无法成功安装libv8。以下是我根据现有建议所得到的错误信息。

是否还有其他建议?

Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.

        /Users/Eric/.rbenv/versions/1.8.7-p352/bin/ruby extconf.rb 
creating Makefile
Unable to find a compiler officially supported by v8.
It is recommended to use GCC v4.4 or higher
Traceback (most recent call last):
  File "build/gyp/gyp", line 18, in <module>
    sys.exit(gyp.main(sys.argv[1:]))
  File "build/gyp/pylib/gyp/__init__.py", line 480, in main
    generator.GenerateOutput(flat_list, targets, data, params)
  File "build/gyp/pylib/gyp/generator/make.py", line 2085, in GenerateOutput
    part_of_all=qualified_target in needed_targets)
  File "build/gyp/pylib/gyp/generator/make.py", line 756, in Write
    self.xcode_settings, self.Absolutify, self.Pchify))
  File "build/gyp/pylib/gyp/generator/make.py", line 1132, in WriteSources
    cflags = self.xcode_settings.GetCflags(configname)
  File "build/gyp/pylib/gyp/xcode_emulation.py", line 258, in GetCflags
    sdk_root = self._SdkPath()
  File "build/gyp/pylib/gyp/xcode_emulation.py", line 247, in _SdkPath
    return os.path.join(self._GetSdkBaseDir(), '%s.sdk' % sdk_root)
  File "build/gyp/pylib/gyp/xcode_emulation.py", line 233, in _GetSdkBaseDir
    raise Exception('Error %d running xcode-select' % job.returncode)
Exception: Error 2 running xcode-select
make: *** [out/Makefile.x64] Error 1
Using compiler: g++
GYP_GENERATORS=make \
    build/gyp/gyp --generator-output="out" build/all.gyp \
                  -Ibuild/standalone.gypi --depth=. \
                  -Dv8_target_arch=x64 \
                  -S.x64 -Dhost_arch=x64
xcode-select: Error: No Xcode is selected. Use xcode-select -switch <path-to-xcode>, or see the xcode-select manpage (man xcode-select) for further information.



Gem files will remain installed in /Users/Eric/Development/par8o/vendor/bundle/ruby/1.8/gems/libv8-3.11.8.3 for inspection.
Results logged to /Users/Eric/Development/par8o/vendor/bundle/ruby/1.8/gems/libv8-3.11.8.3/ext/libv8/gem_make.out
An error occured while installing libv8 (3.11.8.3), and Bundler cannot continue.
Make sure that `gem install libv8 -v '3.11.8.3'` succeeds before bundling.

你安装了Xcode吗?如果没有,请尝试安装Xcode。 - Josnidhin
1
我没有这样做,如果可能的话,我宁愿避免。命令行工具包不应该覆盖这个吗? - Eric M.
可能是可能的,但不是非常确定。 - Josnidhin
1
我发现https://dev59.com/AGIk5IYBdhLWcg3wG63b的gem install libv8 -v 3.11.8.17 -- --with-system-v8可行 =) - xxjjnn
你在说什么过去的自己?只有这个有效:https://dev59.com/VnjZa4cB1Zd3GeqPcU_h(参见指向https://github.com/cowboyd/libv8/issues/107的答案,需要手动安装gem。应该是一个暂时的问题)。 - xxjjnn
9个回答

15

这个问题涉及到ruby 1.8.7。你可能需要安装以下宝石来运行therubyracer。为了使其正常工作,你需要按照以下方式安装therubyracer gem:

RUBYOPT=-rrubygems gem install therubyracer

这将安装therubyracer和libv8两个gem包。

来源:http://coderwall.com/p/y1djxq


3

我遇到了这个问题,并在这里找到了解决方案。

简单来说,如果你有home-brew,可以自己安装v8:

brew install v8

在安装时,请使用系统v8。
gem install libv8 -- --with-system-v8

2
gem install libv8 -v=3.16.14.2 -- --with-system-v8 这个对我有效(注意额外的“--”) - Florin
谢谢@Florin,那是我自己的笔误 :) - cadlac

3
在我的情况下,由于libtool的问题,编译失败了。在安装libv8 gem时,出现了“libtool:无法识别选项“-static”的错误。
问题是,我的macports安装显然有一个不工作的libtool。由于macports目录在$PATH中位于常规目录之前,因此会调用错误的libtool。
从PATH环境变量中删除macports目录就可以解决问题:使用来自XCode的libtool,一切顺利进行。

你能具体说明一下你是如何做到的吗?我对这个过程还比较陌生。 - flyingarmadillo

2
在我遇到OS X 10.7.5的这个问题后,下面的Gemfile条目对我有效:
```ruby gem 'nokogiri', '~> 1.6.0' ```
gem "libv8", '3.11.8.13'

> ruby -v
ruby 1.9.3p327 (2012-11-10 revision 37606) [x86_64-darwin11.4.2]

0

以上的答案都对我没用。这是我做的:

gem install libv8 -v '3.11.8.3'
gem install therubyracer -v '0.11.0beta5'

参考链接:https://coderwall.com/p/s8ofka

我的系统:

OSX Mountain Lion
Ruby 1.9.3

0

首先尝试通过以下方式解决问题:

RUBYOPT=-rrubygems gem install therubyracer

如果错误仍然存在,请更新您的 gem:
bundle update

0

在尝试了多种方法失败后,我最终下载了Xcode,正如错误信息所示,这将解决问题。


0

使用上面的RUBYOPT=-rrubygems建议对我起了作用,但是我必须先卸载我现有的therubyracer和libv8宝石。


-2

不同的宝石需要不同版本的GCC,因此这可能适用于所有宝石,但这些符号链接解决了在安装Xcode 4.4的Mountain Lion上的json、eventmachine和libv8宝石的问题。

sudo ln -s /usr/llvm-gcc-4.2/bin/llvm-gcc-4.2 /usr/bin/gcc-4.2

sudo ln -s /usr/llvm-gcc-4.2/bin/llvm-gcc-4.2 /usr/bin/g++-4.2


不同版本的RUBY需要不同的编译器。分别针对1.9.3和1.9.2需要不同版本的GCC。对于1.9.3,随Mountain Lion附带的GCC应该可以,但如果你想要Ruby 1.9.2m,就必须安装GCC 4.2。 - tesserakt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接