首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在Cygwin上安装libv8 gem

无法在Cygwin上安装libv8 gem
EN

Stack Overflow用户
提问于 2013-02-12 09:21:30
回答 3查看 3K关注 0票数 6

如何安装libv8 gem?我无法安装libv8 gem。当我尝试时,我得到了下面的错误。

代码语言:javascript
复制
$ gem install libv8
Building native extensions.  This could take a while...
ERROR:  Error installing libv8:
        ERROR: Failed to build gem native extension.

        /usr/bin/ruby.exe extconf.rb
creating Makefile
Using compiler: /usr/bin/g++
which: no gmake in (/usr/local/bin:/usr/bin:/cygdrive/c/WINDOWS/system32:/cygdrive/c/WINDOWS:/cygdrive/c/WINDOWS/System32/Wbem:/cygdrive/c/WINDOWS/system32/WindowsPowerShell/v1.0:/cygdrive/c/Program Files/Microsoft SQL Server/100/Tools/Binn/VSShell/Common7/IDE:/cygdrive/c/Program Files/Microsoft SQL Server/100/Tools/Binn:/cygdrive/c/Program Files/Microsoft SQL Server/100/DTS/Binn:/cygdrive/c/Program Files/Heroku/bin:/cygdrive/c/Program Files/ruby-1.9.2/bin:/cygdrive/c/Program Files/git/bin:/cygdrive/c/Program Files/git/cmd:/cygdrive/c/Program Files/DTN/IQFeed:/cygdrive/c/Program Files/OpenVPN/bin:/cygdrive/c/Program Files/Java/apache-ant-1.8.3/bin:/usr/lib/lapack:/cygdrive/c/Program Files/Notepad++:.:/cygdrive/c/Program Files/Java/android-sdk/platform-tools/:/cygdrive/c/Program Files/Java/android-sdk/tools/:/cygdrive/c/Program Files/Java/jdk1.7.0_03/bin)
In file included from ../src/conversions-inl.h:42:0,
                 from ../src/conversions.cc:32:
../src/platform.h:77:12: error: new declaration ‘int random()’
/usr/include/cygwin/stdlib.h:29:6: error: ambiguates old declaration ‘long int random()’
make[1]: *** [/usr/lib/ruby/gems/1.9.1/gems/libv8-3.11.8.13/vendor/v8/out/ia32.release/obj.target/preparser_lib/src/conversions.o] Error 1

我试着用

代码语言:javascript
复制
$ gem install libv8 --pre
Fetching: libv8-3.5.10.beta1.gem (100%)
Building native extensions.  This could take a while...
Successfully installed libv8-3.5.10.beta1
1 gem installed

但是bundle install仍然不能运行。它仍然尝试安装版本3.11.8.13。

代码语言:javascript
复制
Installing libv8 (3.11.8.13) with native extensions
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.

libv8 gem不在我的Gemfile中。我不知道如何找出是什么在试图使用它,但在搜索时,我看到rubyracer使用了libv8,而我确实有

代码语言:javascript
复制
group :assets do
  gem 'therubyracer', :platform => :ruby

我甚至尝试编辑/usr/lib/ruby/gems/1.9.1/gems/libv8-3.11.8.13/src/platform.h文件并注释掉第77行:

//int random();

但是当我运行gem install libv8时,它覆盖了我的更改,仍然给出一个错误。我在gem install libv8 --help中发现了一个技巧,所以我再次编辑了该文件,并注释掉了第77行,然后尝试

代码语言:javascript
复制
cd /usr/lib/ruby/gems/1.9.1/gems/libv8-3.11.8.13/vendor/v8
make

然而,这只是给出了不同的错误:

代码语言:javascript
复制
In file included from /usr/lib/gcc/i686-pc-cygwin/4.5.3/../../../../include/w32api/winsock2.h:56:0,
                 from ../src/win32-headers.h:77,
                 from ../src/platform-win32.cc:31:
/usr/lib/gcc/i686-pc-cygwin/4.5.3/../../../../include/w32api/psdk_inc/_fd_types.h:100:2: warning: #warning "fd_set and associated macros have been defined in sys/types.      This can cause runtime problems with W32 sockets"
In file included from ../src/win32-headers.h:80:0,
                 from ../src/platform-win32.cc:31:
/usr/lib/gcc/i686-pc-cygwin/4.5.3/../../../../include/w32api/wspiapi.h:26:41: error: expected ‘>’ before numeric constant
../src/platform-win32.cc: In function ‘int random()’:
../src/platform-win32.cc:122:12: error: new declaration ‘int random()’
/usr/include/cygwin/stdlib.h:29:6: error: ambiguates old declaration ‘long int random()’
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-02-12 11:06:03

既然你的问题提到了Cygwin,我假设你是Windows用户。目前,还没有办法像它的维护者therubyracer gem on windows所说的那样在Windows中安装therubyracer或libv8。不幸的是,Windows不是Rails的土地。

如果您确实需要libv8,您可以尝试nodejs。它附带了一个二进制文件,对所有平台都很方便。

票数 1
EN

Stack Overflow用户

发布于 2013-07-19 21:48:57

我觉得对于那些只想让错误消失的人来说应该有一个答案,这样他们就可以继续学习rails了。

看起来你并不需要特别的'therubyracer‘--你可以选择其他的javascript引擎。

具体来说,打开文件Gemfile,并将'therubyracer‘更改为'therubyrhino’。(如果rhino不起作用,有更多的选择和建议:https://github.com/sstephenson/execjs#readme

票数 4
EN

Stack Overflow用户

发布于 2013-02-22 21:31:29

我刚刚在我的Win7开发机器上遇到了同样的问题。它看起来像是安装https://github.com/hiranpeiris/therubyracer_for_windows并将gem 'therubyracer'添加到Gemfile中来解决问题。

之前:

代码语言:javascript
复制
$ rails generate
c:/Ruby193/lib/ruby/gems/1.9.1/gems/execjs-1.4.0/lib/execjs/runtimes.rb:51:in `autodetect': Could not find a JavaScript runtime. See https://github.com/sstephenson/execjs for a list of available runtimes. (ExecJS::RuntimeUnavailable)
    from c:/Ruby193/lib/ruby/gems/1.9.1/gems/execjs-1.4.0/lib/execjs.rb:5:in `<module:ExecJS>'
(...)

这基本上意味着Rails需要rubyracer,因此需要libv8

之后:

代码语言:javascript
复制
$ rails generate
    SECURITY WARNING: No secret option provided to Rack::Session::Cookie.
    This poses a security threat. It is strongly recommended that you
    provide a secret to prevent exploits that may be possible from crafted
    cookies. This will not be supported in future versions of Rack, and
    future versions will even invalidate your existing user cookies.

    Called from: c:/Ruby193/lib/ruby/gems/1.9.1/gems/actionpack-3.2.8/lib/action_dispatch/middleware/session/abstract_store.rb:28:in `initialize'.

Usage: rails generate GENERATOR [args] [options]
(...)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14823975

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档