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

时间:2015-06-19 12:22:11

标签: c++ c compilation cross-compiling

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

./autogen.sh
./configure
make

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

  

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

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

这里托管了

nDPI lib: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

1 个答案:

答案 0 :(得分:4)

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

以下是我刚用于编译nDPI的分步指南(包括ndpiReader.exe示例):

安装CYGWIN:

  1. 接受默认目录,然后选择一个镜像。
  2. 选择软件包步骤中,展开开发类别,然后选择要安装的以下开发人员软件包:
    • autoconf的
    • autoconf2.5
    • 的automake
    • automake1.15
    • 的binutils
    • cmake的
    • 的cygwin-devel的
    • GCC-芯
    • GCC-工具-epoch2-autoconf的
    • GCC-工具-epoch2-automake的
    • 的libtool
    • 使
    • pkg配置
    • w32api报头
    • w32api运行时
  3. 在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复制到cygwin \ usr \ include \ pcap
    6. 我确定您已经安装了winpcap作为您尝试的其他所有内容的一部分,但请仔细检查必要的(packet.dll和wpcap.dll)库是否已经在cygwin中\ C \窗口\ system32。

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

      构建nDPI

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

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

      3. 运行autogen.sh

        ./autogen.sh
        

        这应该没有任何错误。

        如果它停在" somepackage 缺失:请安装它并再试一次,"您是否错过了安装构建源所需的CYGWIN包。

        如果它以"缺少libpcap(-dev)库而停止,"仔细检查以前在cygwin \ lib中复制libpcap.a的步骤。

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

        ./configure
        

        在检查了许多内容之后,configure将通过创建Makefile来结束。

      5. 通过运行make。

        构建nDPI库
        make
        

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

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

        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. 保留示例目录,然后恢复make。

        cd ..
        make
        

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