Pregunta

Me encontré con un programa (el enlace es - http: // www. security-freak.net/raw-sockets/sniffer_eth_ip_tcp.c ) en mi Fedora core 5. en la compilación, consigo los errores siguientes:

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

Sin embargo, la estructura iphdr en el archivo de cabecera correspondiente contiene los miembros de datos antes mencionados. puede alguien por favor ayuda ..

¿Fue útil?

Solución

La única manera de conseguir que el error es si el iphdr su programa se está refiriendo a no incluye a los miembros de datos. Por lo tanto, buscar a través de todos sus incluye, la verificación de duplicados de, etc (también, puede ejecutar la fuente a través de una compilación previa y averiguar todo lo que se ha incluido, que por lo general proporciona su respuesta)

[editar]
ejecutar CPP en su fuente para averiguar qué archivos de cabecera se incluyen (en qué orden). Si usted tiene una cabecera con la información incorrecta incluido antes de la información correcta, tendrá un problema. En esencia, sólo se incluyen los archivos necesarios de la cabecera para compilar el programa
[/ Editar]

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top