请问如何解决这个问题?我使用的是最新版本的libpcap-1.0.0。
http://mathieu.carbou.free.fr/wiki/index.php?title=How_to_install_Winpcap_/_Libpcap_under_Cygwin
你可以在http://www.winpcap.org/devel.htm找到libpcap开发包。
详细步骤如下:
安装Winpcap
下载并解压WpdPack_4_0_1.zip等压缩包。
复制库文件:
- 将WpdPack\Lib\libpacket.a复制到cygwin\lib\中
- 将WpdPack\Lib\libwpcap.a复制到cygwin\lib\中
创建文件夹cygwin\usr\include\pcap\
将WpdPack\Include中的所有头文件复制到cygwin\usr\include\winpcap文件夹中
通过输入以下命令,确保你已经安装了Winpcap库并且它们在你的路径中:
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进行时间同步来进行测试。
libpcap源代码仅包括部分Windows支持,而非全部。捕获网络流量的机制是非常依赖于操作系统的(这就是为什么有了libpcap——为了将这一细节从应用程序中隐藏)。
在类UNIX操作系统中,该机制是操作系统的一部分,因此libpcap不必提供该机制。
在Windows上,操作系统中没有这样的机制,因此WinPcap结合了一个内核模式驱动程序、一个与驱动程序通信的低级库以及使用低级库的libpcap模块。
libpcap源代码不包括驱动程序或低级库,因此无法构建适用于Windows的libpcap版本。
正如其他答案所述,您需要使用WinPcap。
我知道这是一个晚回复,但我刚刚在Windows 7上遇到了同样的安装问题。
在Windows上,你应该使用Winpcap: http://www.winpcap.org/
CFLAGS="-g -Wall -I /usr/include/winpcap/"
,因为由于在步骤4中提取到\usr\include\winpcap\
,所以不存在CFLAGS="-g -Wall -I /usr/include/pcap/"
。您也可以简单地更改步骤4以提取到/usr/include/pcap/
。 - gies0r