2013-03-07 134 views
2

我正在嘗試在Windows 7上安裝sinatra-contrib gem,並且出現如下所示的錯誤。有任何想法嗎?在Windows 7上使用Ruby 2.0.0安裝sinatra-contrib時出錯

U:\>gem install sinatra-contrib 
Temporarily enhancing PATH to include DevKit... 
Building native extensions. This could take a while... 
ERROR: Error installing sinatra-contrib: 
     ERROR: Failed to build gem native extension. 

    C:/Ruby200-x64/bin/ruby.exe extconf.rb 
checking for main() in -lssl... no 
checking for rb_trap_immediate in ruby.h,rubysig.h... no 
checking for rb_thread_blocking_region()... yes 
checking for inotify_init() in sys/inotify.h... no 
checking for __NR_inotify_init in sys/syscall.h... no 
checking for writev() in sys/uio.h... no 
checking for rb_wait_for_single_fd()... yes 
checking for rb_enable_interrupt()... no 
checking for rb_time_new()... yes 
checking for windows.h... yes 
checking for winsock.h... yes 
checking for main() in -lkernel32... yes 
checking for main() in -lrpcrt4... yes 
checking for main() in -lgdi32... yes 
creating Makefile 

make 
generating rubyeventmachine-x64-mingw32.def 
compiling binder.cpp 
cc1plus.exe: warning: command line option '-Wdeclaration-after-statement' is valid for C/ObjC but not for C++ [enabled by defa 
cc1plus.exe: warning: command line option '-Wimplicit-function-declaration' is valid for C/ObjC but not for C++ [enabled by de 
In file included from binder.cpp:20:0: 
project.h:26:0: warning: ignoring #pragma warning [-Wunknown-pragmas] 
In file included from project.h:149:0, 
       from binder.cpp:20: 
binder.h:35:34: warning: type qualifiers ignored on function return type [-Wignored-qualifiers] 
In file included from c:\rubydevkit\mingw\bin\../lib/gcc/x86_64-w64-mingw32/4.7.2/../../../../x86_64-w64-mingw32/include/proce 
       from c:/Ruby200-x64/include/ruby-2.0.0/ruby/win32.h:60, 
       from c:/Ruby200-x64/include/ruby-2.0.0/ruby/defines.h:153, 
       from c:/Ruby200-x64/include/ruby-2.0.0/ruby/ruby.h:70, 
       from c:/Ruby200-x64/include/ruby-2.0.0/ruby.h:33, 
       from em.h:24, 
       from project.h:150, 
       from binder.cpp:20: 
c:\rubydevkit\mingw\bin\../lib/gcc/x86_64-w64-mingw32/4.7.2/../../../../x86_64-w64-mingw32/include/sys/types.h:68:16: error: c 
id_t pid_t' 
In file included from binder.cpp:20:0: 
project.h:97:13: error: 'pid_t' has a previous declaration as 'typedef int pid_t' 
In file included from project.h:150:0, 
       from binder.cpp:20: 
em.h:84:47: warning: type qualifiers ignored on function return type [-Wignored-qualifiers] 
em.h:85:76: warning: type qualifiers ignored on function return type [-Wignored-qualifiers] 
em.h:86:56: warning: type qualifiers ignored on function return type [-Wignored-qualifiers] 
em.h:88:57: warning: type qualifiers ignored on function return type [-Wignored-qualifiers] 
em.h:89:60: warning: type qualifiers ignored on function return type [-Wignored-qualifiers] 
em.h:90:58: warning: type qualifiers ignored on function return type [-Wignored-qualifiers] 
em.h:91:36: warning: type qualifiers ignored on function return type [-Wignored-qualifiers] 
em.h:93:47: warning: type qualifiers ignored on function return type [-Wignored-qualifiers] 
em.h:99:42: warning: type qualifiers ignored on function return type [-Wignored-qualifiers] 
em.h:116:45: warning: type qualifiers ignored on function return type [-Wignored-qualifiers] 
em.h:125:36: warning: type qualifiers ignored on function return type [-Wignored-qualifiers] 
In file included from project.h:151:0, 
       from binder.cpp:20: 
ed.h: In member function 'void EventableDescriptor::SetSocketInvalid()': 
ed.h:43:40: warning: overflow in implicit constant conversion [-Woverflow] 
In file included from project.h:154:0, 
       from binder.cpp:20: 
eventmachine.h: At global scope: 
eventmachine.h:46:61: warning: type qualifiers ignored on function return type [-Wignored-qualifiers] 
eventmachine.h:47:112: warning: type qualifiers ignored on function return type [-Wignored-qualifiers] 
eventmachine.h:48:69: warning: type qualifiers ignored on function return type [-Wignored-qualifiers] 
eventmachine.h:50:73: warning: type qualifiers ignored on function return type [-Wignored-qualifiers] 
eventmachine.h:65:75: warning: type qualifiers ignored on function return type [-Wignored-qualifiers] 
eventmachine.h:66:74: warning: type qualifiers ignored on function return type [-Wignored-qualifiers] 
eventmachine.h:67:77: warning: type qualifiers ignored on function return type [-Wignored-qualifiers] 
eventmachine.h:68:41: warning: type qualifiers ignored on function return type [-Wignored-qualifiers] 
In file included from project.h:154:0, 
       from binder.cpp:20: 
eventmachine.h:103:58: warning: type qualifiers ignored on function return type [-Wignored-qualifiers] 
eventmachine.h:105:60: warning: type qualifiers ignored on function return type [-Wignored-qualifiers] 
eventmachine.h:108:41: warning: type qualifiers ignored on function return type [-Wignored-qualifiers] 
make: *** [binder.o] Error 1 


Gem files will remain installed in C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/eventmachine-1.0.1 for inspection. 
Results logged to C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/eventmachine-1.0.1/ext/gem_make.out 

回答

3

sinatra-contrib依賴於EventMachine,它目前在Ruby 2.0中被破解,甚至更多,RubyInstaller使用的GCC 4.7.2。

有一個在RubyInstaller組關於這個here一個線程,並報告給EventMachine的也一樣,issue #412

從EventMachine的分離西納特拉-的contrib發出了太多,不久前,爲issue #30,但它從來沒有得到正式固定。

在EventMachine中解決了GCC 4.7.2的編譯問題之前,唯一的解決方法是請求sinatra維護人員刪除eventmachine依賴關係。

希望有所幫助。

+0

謝謝,現在我知道問題背後的原因。你已經爲自己贏得了一個複選標記;-) - 看看它正在積極努力的線程,所以我會坐下來等待解決方案。謝謝! – 2013-03-08 15:47:47