如何在Windows上为ruby安装PCAP

如何在Windows上为ruby安装PCAP,ruby,windows,pcap,Ruby,Windows,Pcap,这一定是一个相对较新的问题,但我仍然被卡住了。我知道有一个简单的解决办法。我在谷歌上搜索了一下,但找不到确切的答案。这是我得到的错误 C:\Ruby193\include\ruby-1.9.1\i386-mingw32>gem install pcap Temporarily enhancing PATH to include DevKit... Building native extensions. This could take a while... ERROR: Error in

这一定是一个相对较新的问题,但我仍然被卡住了。我知道有一个简单的解决办法。我在谷歌上搜索了一下,但找不到确切的答案。这是我得到的错误

C:\Ruby193\include\ruby-1.9.1\i386-mingw32>gem install pcap
Temporarily enhancing PATH to include DevKit...
Building native extensions.  This could take a while...
ERROR:  Error installing pcap:
        ERROR: Failed to build gem native extension.

        C:/Ruby193/bin/ruby.exe extconf.rb
checking for socket() in -lsocket... no
checking for gethostbyname() in -lxnet... no
checking for hstrerror()... no
checking for pcap.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.
显然,我缺少一些库,但我不知道如何获取这些库,也不知道在尝试安装pcap时它们应该位于何处

mkmf.log

    have_library: checking for socket() in -lsocket... -------------------- 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.    -I/usr/local/include conftest.c  -L. -LC:/Ruby193/lib -L/usr/local/lib     -lmsvcrt-ruby191  -lshell32 -lws2_32 -limagehlp  "
checked program was:
/* begin */
1: #include "ruby.h"
2: 
3: #include <winsock2.h>
4: #include <windows.h>
5: int main() {return 0;}
/* 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.    -I/usr/local/include conftest.c  -L. -LC:/Ruby193/lib -L/usr/local/lib     -lmsvcrt-ruby191 -lsocket  -lshell32 -lws2_32 -limagehlp  "
c:/users/user/downloads/mingw/bin/../lib/gcc/mingw32/4.5.2/../../../../mingw32/bin/ld.exe: cannot find -lsocket
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 main() {return 0;}
8: int t() { void ((*volatile p)()); p = (void ((*)()))socket; return 0; }
/* 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.    -I/usr/local/include conftest.c  -L. -LC:/Ruby193/lib -L/usr/local/lib     -lmsvcrt-ruby191 -lsocket  -lshell32 -lws2_32 -limagehlp  "
conftest.c: In function 't':
conftest.c:8:1: error: too few arguments to function 'socket'
c:\users\user\downloads\mingw\bin\../lib/gcc/mingw32/4.5.2/../../../../include/winsock2.h:553:35: note: declared here
checked program was:
/* begin */
1: #include "ruby.h"
2: 
3: #include <winsock2.h>
4: #include <windows.h>
5: 
6: /*top*/
7: int main() {return 0;}
8: int t() { socket(); return 0; }
/* end */

--------------------

have_library: checking for gethostbyname() in -lxnet... -------------------- 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.    -I/usr/local/include conftest.c  -L. -LC:/Ruby193/lib -L/usr/local/lib     -lmsvcrt-ruby191 -lxnet  -lshell32 -lws2_32 -limagehlp  "
c:/users/user/downloads/mingw/bin/../lib/gcc/mingw32/4.5.2/../../../../mingw32/bin/ld.exe: cannot find -lxnet
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 main() {return 0;}
8: int t() { void ((*volatile p)()); p = (void ((*)()))gethostbyname; return 0; }
/* 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.    -I/usr/local/include conftest.c  -L. -LC:/Ruby193/lib -L/usr/local/lib     -lmsvcrt-ruby191 -lxnet  -lshell32 -lws2_32 -limagehlp  "
conftest.c: In function 't':
conftest.c:8:1: error: too few arguments to function 'gethostbyname'
c:\users\user\downloads\mingw\bin\../lib/gcc/mingw32/4.5.2/../../../../include/winsock2.h:555:57: note: declared here
checked program was:
/* begin */
1: #include "ruby.h"
2: 
3: #include <winsock2.h>
4: #include <windows.h>
5: 
6: /*top*/
7: int main() {return 0;}
8: int t() { gethostbyname(); return 0; }
/* end */

--------------------

have_func: checking for hstrerror()... -------------------- 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.    -I/usr/local/include conftest.c  -L. -LC:/Ruby193/lib -L/usr/local/lib     -lmsvcrt-ruby191  -lshell32 -lws2_32 -limagehlp  "
conftest.c: In function 't':
conftest.c:8:53: error: 'hstrerror' undeclared (first use in this function)
conftest.c:8: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 main() {return 0;}
8: int t() { void ((*volatile p)()); p = (void ((*)()))hstrerror; return 0; }
/* 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.    -I/usr/local/include conftest.c  -L. -LC:/Ruby193/lib -L/usr/local/lib     -lmsvcrt-ruby191  -lshell32 -lws2_32 -limagehlp  "
C:\Users\USER\AppData\Local\Temp\ccbjKHSc.o:conftest.c:(.text+0x19): undefined reference to `hstrerror'
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 main() {return 0;}
8: int t() { hstrerror(); return 0; }
/* end */

--------------------

have_header: checking for pcap.h... -------------------- no

"gcc -E -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.    -I/usr/local/include  conftest.c -o conftest.i"
conftest.c:5:18: fatal error: pcap.h: No such file or directory
compilation terminated.
checked program was:
/* begin */
1: #include "ruby.h"
2: 
3: #include <winsock2.h>
4: #include <windows.h>
5: #include <pcap.h>
/* end */

--------------------
have_库:检查-lsocket中的socket()不
“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.-I/usr/local/include conftest.c-L.-LC:/Ruby193/lib-L/usr/local/lib-lmsvcrt-ruby191-lshell32-limagehlp”
检查的程序是:
/*开始*/
1:#包括“ruby.h”
2: 
3:#包括
4:#包括
5:int main(){返回0;}
/*结束*/
“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.-I/usr/local/include conftest.c-L-LC:/Ruby193/lib-L/usr/local/lib-lmsvcrt-ruby191-lsocket-lshell32-lws2-limagehlp”
c:/users/user/downloads/mingw/bin/./lib/gcc/mingw32/4.5.2/../../../../../../../mingw32/bin/ld.exe:找不到-lsocket
collect2:ld返回了1个退出状态
检查的程序是:
/*开始*/
1:#包括“ruby.h”
2: 
3:#包括
4:#包括
5: 
6:/*顶部*/
7:int main(){返回0;}
8:int t(){void((*volatile p)();p=(void((*)())套接字;返回0;}
/*结束*/
“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.-I/usr/local/include conftest.c-L-LC:/Ruby193/lib-L/usr/local/lib-lmsvcrt-ruby191-lsocket-lshell32-lws2-limagehlp”
conftest.c:在函数“t”中:
conftest.c:8:1:错误:函数“socket”的参数太少
c:\users\user\downloads\mingw\bin\../lib/gcc/mingw32/4.5.2/../../../../../../../include/winsock2.h:553:35:注意:此处声明
检查的程序是:
/*开始*/
1:#包括“ruby.h”
2: 
3:#包括
4:#包括
5: 
6:/*顶部*/
7:int main(){返回0;}
8:int t(){socket();返回0;}
/*结束*/
--------------------
have_library:正在-lxnet中检查gethostbyname()不
“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.-I/usr/local/include conftest.c-L.-LC:/Ruby193/lib-L/usr/local/lib-lmsvcrt-ruby191-lxnet-lshell32-lws2-limagehlp”
c:/users/user/downloads/mingw/bin/./lib/gcc/mingw32/4.5.2/../../../../../../../mingw32/bin/ld.exe:找不到-lxnet
collect2:ld返回了1个退出状态
检查的程序是:
/*开始*/
1:#包括“ruby.h”
2: 
3:#包括
4:#包括
5: 
6:/*顶部*/
7:int main(){返回0;}
8:int t(){void((*volatile p)();p=(void((*)())gethostbyname;返回0;}
/*结束*/
“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.-I/usr/local/include conftest.c-L.-LC:/Ruby193/lib-L/usr/local/lib-lmsvcrt-ruby191-lxnet-lshell32-lws2-limagehlp”
conftest.c:在函数“t”中:
conftest.c:8:1:错误:函数“gethostbyname”的参数太少
c:\users\user\downloads\mingw\bin\../lib/gcc/mingw32/4.5.2/../../../../../../include/winsock2.h:555:57:注意:此处声明
检查的程序是:
/*开始*/
1:#包括“ruby.h”
2: 
3:#包括
4:#包括
5: 
6:/*顶部*/
7:int main(){返回0;}
8:int t(){gethostbyname();返回0;}
/*结束*/
--------------------
have_func:正在检查hstrerror()…------------不
“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.-I/usr/local/include conftest.c-L.-LC:/Ruby193/lib-L/usr/local/lib-lmsvcrt-ruby191-lshell32-limagehlp”
conftest.c:在函数“t”中:
conftest.c:8:53:错误:“hstrerror”未声明(此函数首次使用)
conftest.c:8:53:注意:每个未声明的标识符对于它出现在其中的每个函数只报告一次
检查的程序是:
/*开始*/
1:#包括“ruby.h”
2: 
3:#包括
4:#包括
5: 
6:/*顶部*/
7:int main(){返回0;}
8:int t(){void((*volatile p)();p=(void((*)())hs错误;返回0;}
/*结束*/
“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.-I/usr/local/include conftest.c-L.-LC:/Ruby193/lib-L/usr/local/lib-lmsvcrt-ruby191-lshell32-limagehlp”
C:\Users\USER\AppData\Local\Temp\ccbjKHSc.o:conftest.C:(.text+0x19):对“hstrerror”的引用未定义
collect2:ld返回了1个退出状态
检查的程序是:
/*开始*/
1:#包括“ruby.h”
2: 
3:#包括
4:#包括
5: 
6:/*顶部*/
7:int main(){返回0;}
8:int t(){hstrerror();返回0;}
/*结束*/
--------------------
have_头:检查pcap.h..-------------不
“gcc-E-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.-I/usr/local/include conftest.c-o conftest.I”
conftest.c:5:18:致命错误:pcap.h:没有这样的文件或目录
编译终止。
检查的程序是:
/*开始*/
1:#包括“ruby.h”
2: 
3:#包括
4:#包括
5:#包括
/*结束*/
--------------------

最终的解决方案是不使用pcap rub,这似乎已经过时了


我试过PCAP rub,但仍然遇到问题。你可以沿着Jonm最终帮助我站起来跑步的地方走。

这是一段半长的路。我怎样才能连接它?它确实提到了像。。。。