2013-11-15 138 views
0

我是新来的红宝石。当我试图“创业板安装therubyracer”它显示了以下错误:安装therubyracer宝石错误

C:\Users\Desktop>gem install therubyracer 
Temporarily enhancing PATH to include DevKit... 
Building native extensions. This could take a while... 
ERROR: Error installing therubyracer: 
     ERROR: Failed to build gem native extension. 

    C:/Ruby193/bin/ruby.exe extconf.rb 
checking for main() in -lpthread... 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 
     --without-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=C:/Ruby193/bin/ruby 
     --with-pthreadlib 
     --without-pthreadlib 
     --enable-debug 
     --disable-debug 
C:/Ruby193/lib/ruby/gems/1.9.1/gems/libv8-3.16.14.3/ext/libv8/location.rb:15:in `initialize': No such file or directory - C:/Ruby193/lib/ruby/gems/1.9.1/gems/libv8-3.16.14.3/ext/libv8/.location.yml (Errno::ENOENT) 
     from C:/Ruby193/lib/ruby/gems/1.9.1/gems/libv8-3.16.14.3/ext/libv8/location.rb:15:in `open' 
     from C:/Ruby193/lib/ruby/gems/1.9.1/gems/libv8-3.16.14.3/ext/libv8/location.rb:15:in `load!' 
     from C:/Ruby193/lib/ruby/gems/1.9.1/gems/libv8-3.16.14.3/lib/libv8.rb:6:in `configure_makefile' 
     from extconf.rb:32:in `<main>' 


Gem files will remain installed in C:/Ruby193/lib/ruby/gems/1.9.1/gems/therubyracer-0.12.0 for inspection. 
Results logged to C:/Ruby193/lib/ruby/gems/1.9.1/gems/therubyracer-0.12.0/ext/v8/gem_make.out 

C:\Users\Desktop> 

我试着在谷歌和计算器中的一些其他类似的职位搜索,但没有人能解决这个问题。

mkmf.log

have_library: checking for main() in -lpthread... -------------------- no 

"gcc -o conftest -IC:/Ruby193/include/ruby-1.9.1/i386-mingw32 -IC:/Ruby193/include/ruby-1.9.1/ruby/backward -IC:/Ruby193/include/ruby-1.9.1 -I. -DFD_SETSIZE=2048 -DFD_SETSIZE=2048 -O3 -fno-omit-frame-pointer -g -Wall -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wpointer-arith -Wwrite-strings -Wdeclaration-after-statement -Wimplicit-function-declaration conftest.c -L. -LC:/Ruby193/lib -L.  -lmsvcrt-ruby191 -lshell32 -lws2_32 -limagehlp -lshlwapi " 
checked program was: 
/* begin */ 
1: #include "ruby.h" 
2: 
3: #include <winsock2.h> 
4: #include <windows.h> 
5: int main(int argc, char **argv) 
6: { 
7: return 0; 
8: } 
/* end */ 

"gcc -o conftest -IC:/Ruby193/include/ruby-1.9.1/i386-mingw32 -IC:/Ruby193/include/ruby-1.9.1/ruby/backward -IC:/Ruby193/include/ruby-1.9.1 -I. -DFD_SETSIZE=2048 -DFD_SETSIZE=2048 -O3 -fno-omit-frame-pointer -g -Wall -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wpointer-arith -Wwrite-strings -Wdeclaration-after-statement -Wimplicit-function-declaration conftest.c -L. -LC:/Ruby193/lib -L.  -lmsvcrt-ruby191 -lpthread -lshell32 -lws2_32 -limagehlp -lshlwapi " 
conftest.c: In function 't': 
conftest.c:7:53: error: 'main' undeclared (first use in this function) 
conftest.c:7:53: note: each undeclared identifier is reported only once for each function it appears in 
checked program was: 
/* begin */ 
1: #include "ruby.h" 
2: 
3: #include <winsock2.h> 
4: #include <windows.h> 
5: 
6: /*top*/ 
7: int t() { void ((*volatile p)()); p = (void ((*)()))main; return 0; } 
8: int main(int argc, char **argv) 
9: { 
10: if (argc > 1000000) { 
11:  printf("%p", &t); 
12: } 
13: 
14: return 0; 
15: } 
/* end */ 

"gcc -o conftest -IC:/Ruby193/include/ruby-1.9.1/i386-mingw32 -IC:/Ruby193/include/ruby-1.9.1/ruby/backward -IC:/Ruby193/include/ruby-1.9.1 -I. -DFD_SETSIZE=2048 -DFD_SETSIZE=2048 -O3 -fno-omit-frame-pointer -g -Wall -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wpointer-arith -Wwrite-strings -Wdeclaration-after-statement -Wimplicit-function-declaration conftest.c -L. -LC:/Ruby193/lib -L.  -lmsvcrt-ruby191 -lpthread -lshell32 -lws2_32 -limagehlp -lshlwapi " 
conftest.c: In function 't': 
conftest.c:7:1: warning: implicit declaration of function 'main' 
conftest.c:10:6: warning: 'argc' is used uninitialized in this function 
conftest.c:7:5: note: 'argc' was declared here 
c:/devkit193/mingw/bin/../lib/gcc/mingw32/4.5.2/../../../../mingw32/bin/ld.exe: cannot find -lpthread 
collect2: ld returned 1 exit status 
checked program was: 
/* begin */ 
1: #include "ruby.h" 
2: 
3: #include <winsock2.h> 
4: #include <windows.h> 
5: 
6: /*top*/ 
7: int t() { main(); return 0; } 
8: int main(int argc, char **argv) 
9: { 
10: if (argc > 1000000) { 
11:  printf("%p", &t); 
12: } 
13: 
14: return 0; 
15: } 
/* end */ 

-------------------- 
+0

嗯...你检查了mkmf.log文件吗?我们可以看到它吗? – screenmutt

+0

我收录了我的mkmf.log文件 – user2803152

+0

这似乎是一个mingw32问题。我没有太多的经验。尝试手动安装它。 – screenmutt

回答

1

你不需要它(我不认为这是支持的,反正)。只需将您的gemfile更改为:gem 'therubyracer', platforms: :ruby并重新运行捆绑程序。

+1

我仍然收到相同的错误。 – user2803152

7

这解决了这个问题对我来说:

gem uninstall libv8 
gem install therubyracer 

Source

+0

真棒,适合我! –

0

我想最简单的办法是使用宝石的最后一个版本。所以,我更新了我的Gemfile指向的最后一个版本,像这样:

宝石“therubyracer”,“〜> 0.10.2”

,我能够成功安装宝石。

如果你想手动安装的宝石,你可以使用:

创业板安装therubyracer --version “〜> 0.10.2”

0

这解决了这个问题对我来说:

 
gem uninstall libv8 
brew install v8 
gem install therubyracer