如何在Windows中编译nDPI库自带的ndpiReader.c?

How can I compile ndpiReader.c that comes with nDPI library in Windows?

我想创建 nDPI library 附带的 ndpiReader.c 演示程序的 .exe。我使用在 github 页面上指定的命令在 Ubuntu 上成功编译了它,如下所示:

./autogen.sh
./configure
make

我曾尝试在 Ubuntu 中使用 GCC 对其进行交叉编译,但没有成功。我还尝试使用 pcapExample.sln 在 Visual Studio 2012 中编译它,但我不断收到如下错误消息:

Error 29 error C1083: Cannot open include file: 'ndpi_api.h': No such file or directory

尽管 ndpi_api.h 以及我收到此错误的所有其他文件都已列在项目解决方案资源管理器中。 有没有人真的能够从这个 ndpiReader.c 文件中创建一个 win32 可执行文件?如果是,请具体说明步骤、要求,或link。

nDPI 库托管在这里:https://github.com/ntop/nDPI

ndpiReader.c 托管于此:https://github.com/ntop/nDPI/tree/dev/example

pcapExample.sln 托管于此:https://github.com/ntop/nDPI/tree/dev/example/Win32

我从你的其他问题中看到你已经尝试用 CYGWIN 和 运行 将其编译成许多问题。

这是我刚刚用来编译 nDPI 的 step-by-step 指南(包括 ndpiReader.exe 示例):

安装 CYGWIN:

  1. 接受默认目录,并选择一个镜像。
  2. Select Packages 步骤中,展开 Devel 类别,select 以下开发包安装:
    • 自动配置
    • autoconf2.5
    • 自动制作
    • automake1.15
    • binutils
    • cmake
    • cygwin-devel
    • gcc-core
    • gcc-tools-epoch2-autoconf
    • gcc-tools-epoch2-automake
    • libtool
    • 制作
    • pkg-config
    • w32api-headers
    • w32api-运行时

在CYGWIN下安装libpcap:

  1. 下载并解压缩 Winpcap Developer's pack
  2. 将 libpacket.a 和 libwpcap.a 从 WpdPack\Lib\ 复制到 cygwin\lib\
  3. 在cygwin\lib中,复制libwpcap.a到libpcap.a
  4. 在cygwin\usr\include中创建一个pcap目录
  5. 将WpdPack\Include中的所有headers复制到cygwin\usr\include\pcap

我确定您已经安装了 winpcap 作为您尝试过的所有其他操作的一部分,但是 double-check 必要的(packet.dll 和 wpcap.dll)库已经存在在 cygwin\c\WINDOWS\system32.

现在您已经获得了在 Windows 上编译 nDPI 所需的所有必要工具和库!

构建 nDPI

  1. 再次下载 nDPI 并将其解压缩到一个干净的目录中,这样您就不会被您尝试过的上一个版本的任何问题绊倒。

  2. 打开CYGWIN终端,cd进入nDPI目录

  3. 运行 autogen.sh

    ./autogen.sh
    

    这应该没有任何错误地完成。

    如果它停止并显示“somepackage is missing: please install it and try again,”你错过了安装构建所需的 CYGWIN 包来源。

    如果它以 "Missing libpcap(-dev) library," 停止 double-check 您之前在 cygwin\lib 中复制 libpcap.a 的步骤。

  4. autogen.sh 应该会为您启动 运行 配置阶段。 (如果没有,或者此阶段的一部分失败,您可以在解决任何问题后重新运行配置。)

    ./configure
    

    检查了一些东西后,configure 将以创建 Makefile 结束。

  5. 构建 nDPI 库,由 运行 make.

    make
    

    它将构建库,然后尝试构建示例,但由于找不到 pcap.h

    [=104= 而失败]
  6. cd到example目录下,手动编译ndpiReader.c,在命令中加入-I/usr/include/pcap

    cd example/
    gcc -DHAVE_CONFIG_H -I. -I.. -I../src/include -I/usr/include/pcap -g -O2 -c -o ndpiReader.o ndpiReader.c
    

    我以我的命令为例。如果您的编译器命令略有不同,只需将 -I/usr/include/pcap 添加到您的 Makefile 调用的命令中。

  7. 离开示例目录,继续制作。

    cd ..
    make
    

    最后一步将 link ndpiReader 与 ndpi 库一起创建您要查找的可执行文件。