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

the*_*mer 8 c c++ compilation cross-compiling

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

./autogen.sh
./configure
make
Run Code Online (Sandbox Code Playgroud)

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

错误29错误C1083:无法打开包含文件:'ndpi_api.h':没有这样的文件或目录

虽然ndpi_api.h我收到此错误的所有其他文件已列在项目解决方案资源管理器中.有没有人真的能够从这个ndpiReader.c文件中生成win32可执行文件?如果是,请指定步骤,要求或链接.

nDPIlib托管在这里: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

小智 4

我从你的其他问题中看到你已经尝试用CYGWIN编译它编译它并遇到了许多问题。

\n\n

Here\xe2\x80\x99s是我刚刚用来编译nDPI的分步指南(包括ndpiReader.exe示例):

\n\n

安装CYGWIN:

\n\n
    \n
  1. 接受默认目录,然后选择一个镜像。
  2. \n
  3. “选择包”步骤中,展开“开发”类别,然后选择要安装的以下开发人员包:\n\n
      \n
    • 自动配置
    • \n
    • 自动配置2.5
    • \n
    • 汽车制造商
    • \n
    • automake1.15
    • \n
    • 二进制工具
    • \n
    • cmake
    • \n
    • cygwin-开发
    • \n
    • gcc核心
    • \n
    • gcc-工具-epoch2-autoconf
    • \n
    • gcc-工具-epoch2-automake
    • \n
    • 库工具
    • \n
    • 制作
    • \n
    • pkg 配置
    • \n
    • w32api 标头
    • \n
    • w32api 运行时
    • \n
  4. \n
\n\n

在CYGWIN下安装libpcap:

\n\n
    \n
  1. 下载并解压Winpcap 开发人员包
  2. \n
  3. 将 libpacket.a 和 libwpcap.a 从 WpdPack\\Lib\\ 复制到 cygwin\\lib\\
  4. \n
  5. 在cygwin\\lib中,将libwpcap.a复制到libpcap.a
  6. \n
  7. 在cygwin\\usr\\include中,创建pcap目录
  8. \n
  9. 将所有标头从 WpdPack\\Ininclude 复制到 cygwin\\usr\\include\\pcap
  10. \n
\n\n

我确信您已经安装了 winpcap 作为您尝试过的其他所有内容的一部分,但请仔细检查必要的(packet.dll 和 wpcap.dll)库是否已在 cygwin\\c\\WINDOWS 中\\system32.

\n\n

现在您已经拥有在 Windows 上编译 nDPI 所需的所有工具和库!

\n\n

构建 nDPI

\n\n
    \n
  1. 再次下载 nDPI 并将其解压到一个干净的目录中,这样您就不会被之前尝试的构建中的任何问题所困扰。

  2. \n
  3. 打开 CYGWIN 终端,然后 cd 进入 nDPI 目录。

  4. \n
  5. 运行autogen.sh

    \n\n
    ./autogen.sh\n
    Run Code Online (Sandbox Code Playgroud)\n\n

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

    \n\n

    如果它以“缺少某个包:请安装它并重试”而停止,则您错过了安装构建源代码所需的 CYGWIN 包。

    \n\n

    如果它因“缺少 libpcap(-dev) 库”而停止,请仔细检查您之前在 cygwin\\lib 中复制 libpcap.a 所做的步骤。

  6. \n
  7. autogen.sh 应该开始为您运行配置阶段。(如果没有,或者此阶段的部分失败,您可以在修复任何问题后重新运行配置。)

    \n\n
    ./configure\n
    Run Code Online (Sandbox Code Playgroud)\n\n

    检查完多项内容后,配置将通过创建 Makefile 结束。

  8. \n
  9. 通过运行 make 构建 nDPI 库。

    \n\n
    make\n
    Run Code Online (Sandbox Code Playgroud)\n\n

    它将构建库,然后尝试构建示例,但失败,因为它找不到pcap.h

  10. \n
  11. cd 进入示例目录,并通过在命令中添加-I/usr/include/pcap 来手动编译 ndpiReader.c:

    \n\n
    cd example/\ngcc -DHAVE_CONFIG_H -I. -I.. -I../src/include -I/usr/include/pcap -g -O2 -c -o ndpiReader.o ndpiReader.c\n
    Run Code Online (Sandbox Code Playgroud)\n\n

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

  12. \n
  13. 离开示例目录,然后恢复 make。

    \n\n
    cd ..\nmake\n
    Run Code Online (Sandbox Code Playgroud)\n\n

    最后一步将 ndpiReader 与 ndpi 库链接,并创建您正在寻找的可执行文件。

  14. \n
\n