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

どうやら、configure にはこのテストでバグがあり、私のシステムには "ダム" udphdr があると思われますが、実際にはそうではありません。最初の行を「#if 0」に変更すると、問題が解決します。

于 2008-10-17T22:16:11.497 に答える
1

さて、udphdr(おそらくudpヘッダーの略)と呼ばれる構造体があります。また、プログラムの一部では、構造体にソースと宛先のメンバーが含まれていると想定していますが、そうではありません。

ファイルngrep.cの544行目と545行目を見て、問題のある行を見つけてください。

考えられる原因:

  • タイプ名タイプエラー。
  • 構造体は完全には定義されていません。
  • 間違った構造体を使用しています。

編集:おそらく関連する問題: http: //ubuntuforums.org/showthread.php?t = 371871

于 2008-10-17T21:59:46.740 に答える