4

我试图在 Windows 7 上的 cygwin 下安装 libpcap,但我遇到了这个错误: $ ./configure 。. . . . 配置:错误:有关详细信息,请参阅安装

我该如何解决这个问题?我正在使用最新版本的 libpcap-1.0.0。

4

3 回答 3

10

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

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

详细步骤如下:

设置 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 库并且它们在您的路径中,方法是键入:

    which packet.dll
    which wpcap.dll
    

对我来说,它们位于 /cygdrive/c/WINDOWS/system32/

使用 Cygwin 构建示例

打开 cygwin 提示符到 WpdPack\Examples-pcap\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.

UDP转储:

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 进行时间同步来进行测试。

于 2013-03-23T02:58:50.347 回答
5

libpcap 源包含部分但不是全部的 Windows 支持。用于捕获网络流量的机制非常依赖于操作系统(这就是 libpcap 存在的原因——从应用程序中隐藏该细节)。

在 UN*Xes 上,该机制是操作系统的一部分,因此 libpcap 不必提供该机制。

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

libpcap 源不包含驱动程序或低级库,因此仅构建 Windows 版本的 libpcap 是不够的。

正如其他答案所示,您需要 WinPcap。

于 2013-03-24T00:42:24.040 回答
4

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

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

于 2010-09-21T18:21:53.420 回答