Domanda

Ho eseguito un programma (il link è - http: // www. security-freak.net/raw-sockets/sniffer_eth_ip_tcp.c ) nel mio Fedora Core 5. compilazione, ottengo i seguenti errori:

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

Ma, l'iphdr struct nel file di intestazione corrispondente contiene i componenti di dati di cui sopra. chiunque può aiutare prego ..

È stato utile?

Soluzione

L'unico modo per ottenere che l'errore è se l'iphdr il programma si riferisce a non include i membri di dati. Quindi, cerca il tuo comprende, verificare la presenza di DUP, ecc (anche, è possibile eseguire la fonte attraverso una precompilazione e scoprire tutto quello che è stato incluso, che di solito fornisce la risposta)

[modifica]
eseguire cpp sulla vostra fonte per scoprire quali file header sono inclusi (in quale ordine). Se si dispone di un colpo di testa con le informazioni sbagliate incluso prima le informazioni corrette, si avrà un problema. In sostanza, includere solo i file necessari l'intestazione per compilare il programma
[/ Modifica]

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top