Frage

ich ein Programm lief (der Link ist - http: // www. security-freak.net/raw-sockets/sniffer_eth_ip_tcp.c ) in meinem Fedora Core 5. Zusammenstellung, erhalte ich die folgenden Fehler:

[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’

Aber die Struktur iphdr in der entsprechenden Header-Datei enthält die oben genannten Daten Mitglieder. Kann mir jemand helfen bitte ..

War es hilfreich?

Lösung

Der einzige Weg, diesen Fehler zu erhalten ist, wenn die iphdr Ihr Programm bezieht sich nicht jene Datenelemente enthalten. So suchen Sie durch alle, die Prüfung für dup des enthält usw. (auch, können Sie die Quelle durch eine precompile laufen und alles herausfinden, die enthalten ist, dass in der Regel die Antwort liefert)

[Bearbeiten]
Lauf cpp auf Ihrer Quelle, um herauszufinden, welche Header-Dateien enthalten sind (in der Reihenfolge). Wenn Sie einen Header mit den falschen Informationen, bevor die richtigen Informationen enthalten haben, werden Sie ein Problem haben. Im Wesentlichen sind nur die Header-Dateien notwendig, das Programm zu kompilieren
[/ Edit]

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top