0

我正在尝试编译一个名为 ngrep 的程序,当我运行 configure 时,事情似乎进展顺利,但是当我运行 make 时,我得到:

ngrep.c: In function ‘process’:
ngrep.c:544: error: ‘struct udphdr’ has no member named ‘source’
ngrep.c:545: error: ‘struct udphdr’ has no member named ‘dest’
make: *** [ngrep.o] Error 1                              

这是什么意思,我该如何解决?没有早期的警告或错误提示问题的根源。

4

2 回答 2

3

发现问题:

#ifdef HAVE_DUMB_UDPHDR
                printf("%s:%d -", inet_ntoa(ip_packet->ip_src), ntohs(udp->source));
                printf("> %s:%d", inet_ntoa(ip_packet->ip_dst), ntohs(udp->dest));
#else
                printf("%s:%d -", inet_ntoa(ip_packet->ip_src), ntohs(udp->uh_sport));
                printf("> %s:%d", inet_ntoa(ip_packet->ip_dst), ntohs(udp->uh_dport));
#endif

Apparently, configure has a bug in this test, and it thinks my system has the "dumb" udphdr, even though it doesn't. Changing the first line to "#if 0" fixes the problem.

于 2008-10-17T22:16:11.497 回答
1

好吧,有一个名为 udphdr 的结构(可能是 udp header 的缩写)。并且程序的某些部分假定结构具有它没有的成员 source 和 dest。

查看文件 ngrep.c 的第 544 和 545 行以找到有问题的行。

可能的原因:

  • 类型名称类型错误。
  • struct 没有完全定义。
  • 使用错误的结构。

编辑:可能相关的问题:http ://ubuntuforums.org/showthread.php?t=371871

于 2008-10-17T21:59:46.740 回答