在Cygwin上安装libpcap的帮助

4
我正在尝试在Windows 7上的cygwin中安装libpcap,但是出现了以下错误: $ ./configure . . . . . configure: error: 请参阅INSTALL以获取更多信息。
请问如何解决这个问题?我使用的是最新版本的libpcap-1.0.0。
3个回答

10

http://mathieu.carbou.free.fr/wiki/index.php?title=How_to_install_Winpcap_/_Libpcap_under_Cygwin

你可以在http://www.winpcap.org/devel.htm找到libpcap开发包。

详细步骤如下:

安装Winpcap

  1. 下载并解压WpdPack_4_0_1.zip等压缩包。

  2. 复制库文件:

    • 将WpdPack\Lib\libpacket.a复制到cygwin\lib\中
    • 将WpdPack\Lib\libwpcap.a复制到cygwin\lib\中
  3. 创建文件夹cygwin\usr\include\pcap\

  4. 将WpdPack\Include中的所有头文件复制到cygwin\usr\include\winpcap文件夹中

  5. 通过输入以下命令,确保你已经安装了Winpcap库并且它们在你的路径中:

  6. which packet.dll
    which wpcap.dll
    

对于我而言,它们在/cygdrive/c/WINDOWS/system32/目录下。

使用Cygwin构建示例

打开一个Cygwin提示符到WpdPack\Examples-pcap\basic_dump\,并执行:

basic_dump:

CFLAGS="-g -Wall -mno-cygwin -I /usr/include/pcap"
LIBS="-lwpcap"
PROG="basic_dump"
gcc $CFLAGS -c $PROG.c
gcc $CFLAGS -o $PROG.exe $PROG.o $LIBS
./$PROG.exe

基本转储(basic_dump_ex):

CFLAGS="-g -Wall -mno-cygwin -I /usr/include/pcap"
LIBS="-lwpcap"
PROG="basic_dump_ex"
gcc $CFLAGS -c $PROG.c
gcc $CFLAGS -o $PROG.exe $PROG.o $LIBS
./$PROG.exe

列表:

CFLAGS="-g -Wall -mno-cygwin -I /usr/include/pcap"
LIBS="-lwpcap"
PROG="iflist"
gcc $CFLAGS -c $PROG.c
gcc $CFLAGS -o $PROG.exe $PROG.o $LIBS
./$PROG.exe

pcap_filter(以及其他):

I think you can catch the pattern ;) Only replace PROG=... by the program name and it should compile.

UDPdump:

CFLAGS="-g -Wall -mno-cygwin -I /usr/include/pcap"
LIBS="-lwpcap -lwsock32"
PROG="UDPdump"
gcc $CFLAGS -c $PROG.c
gcc $CFLAGS -o $PROG.exe $PROG.o $LIBS
./$PROG.exe

例如,您可以通过与pool.ntp.org进行时间同步来进行测试。


谢谢,但我收到了一个“未知命令行选项'-mno-cygwin'”的错误提示。我按照所有步骤操作,有什么建议吗? - gies0r
1
@gies0r -mno-cygwin已经过时了。您可以删除此选项并重试。请注意http://cygwin.1069669.n5.nabble.com/g-mno-cygwin-flag-not-recognized-td134123.html。 - camino
1
感谢@camino。我认为这里还有一个复制/粘贴问题:需要CFLAGS="-g -Wall -I /usr/include/winpcap/",因为由于在步骤4中提取到\usr\include\winpcap\,所以不存在CFLAGS="-g -Wall -I /usr/include/pcap/"。您也可以简单地更改步骤4以提取到/usr/include/pcap/ - gies0r

5

libpcap源代码仅包括部分Windows支持,而非全部。捕获网络流量的机制是非常依赖于操作系统的(这就是为什么有了libpcap——为了将这一细节从应用程序中隐藏)。

在类UNIX操作系统中,该机制是操作系统的一部分,因此libpcap不必提供该机制。

在Windows上,操作系统中没有这样的机制,因此WinPcap结合了一个内核模式驱动程序、一个与驱动程序通信的低级库以及使用低级库的libpcap模块。

libpcap源代码不包括驱动程序或低级库,因此无法构建适用于Windows的libpcap版本。

正如其他答案所述,您需要使用WinPcap。


4

我知道这是一个晚回复,但我刚刚在Windows 7上遇到了同样的安装问题。

在Windows上,你应该使用Winpcap: http://www.winpcap.org/


请注意 - 当使用64位cygwin时,winpcap开发人员包似乎无法正常工作。因此,如果将开发人员包放置在正确位置后仍然看到pcap库缺失错误,请尝试32位cygwin。 - Yoope

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