「構造体iphdr」のようなエラーを解決する方法を「DADDR」という名前のメンバーを持っていません

StackOverflow https://stackoverflow.com/questions/2034678

質問

私はプログラムを実行した(リンクがある - のhttp:// WWW。 security-freak.net/raw-sockets/sniffer_eth_ip_tcp.c の)コンパイルでは、私のFedoraのコア5に、私は次のエラーを取得します:

[root@localhost ~]# gcc sniffer_eth_ip_tcp.c
    In file included from sniffer_eth_ip_tcp.c:12: /usr/include/linux/ip.h:97: error: expected specifier-qualifier-list before ‘uint8_t’
    In file included from /usr/include/linux/tcp.h:21,
                 from sniffer_eth_ip_tcp.c:13:
    /usr/include/asm/byteorder.h:6:2: warning: #warning using private kernel header; include   <endian.h> instead!
    sniffer_eth_ip_tcp.c: In function ‘ParseIpHeader’:
    sniffer_eth_ip_tcp.c:147: error: ‘struct iphdr’ has no member named ‘daddr’
    sniffer_eth_ip_tcp.c:148: error: ‘struct iphdr’ has no member named ‘saddr’
    sniffer_eth_ip_tcp.c: In function ‘ParseTcpHeader’:
    sniffer_eth_ip_tcp.c:185: error: ‘struct iphdr’ has no member named ‘protocol’
    sniffer_eth_ip_tcp.c:187: error: ‘struct iphdr’ has no member named ‘ihl’

しかし、対応するヘッダファイルの構造体iphdrは、上述したデータメンバーを含みます。 誰が助けてくださいすることができます..

役に立ちましたか?

解決

あなたのプログラムが参照しているiphdrは、これらのデータメンバが含まれていない場合は、

そのエラーを取得する唯一の方法です。だから、すべてあなた含み、(また、あなたがプリコンパイルを介してソースを実行すると、通常はあなたの答えを提供することを、含まれているすべてのものを見つけることができます)などDUPの、の確認

を検索

[編集]
ヘッダファイルが(そのために)含まれているかを見つけるためにあなたの元にCPPを実行します。あなたは正しい情報の前に含ま間違った情報を持つヘッダを持っている場合は、問題を持っています。本質的には、ヘッダのみがプログラムをコンパイルするのに必要なファイルが含ま
[/編集]

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top