我跑一个程序(该链接 - http://www.security-freak.net/raw-sockets/sniffer_eth_ip_tcp.c)在我的Fedora Core 5,在编译时,我得到了以下错误:如何解决类似“结构iphdr”错误没有名为成员“DADDR”
[[email protected] ~]# 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’
但是,相应头文件中的struct iphdr包含上述数据成员。 任何人都可以请帮忙..
这些是第一个发生的错误,还是在他们面前有其他错误?你能发布编译器的_entire_输出吗?另外,请查看/usr/include/linux/ip.h中的'struct iphdr'的定义以查看这些成员是否实际定义。 – 2010-01-09 20:23:12
什么是您正在编译的实际文件。编译器输出说文件名是“tcp.c”,而不是“sniffer_eth_ip_tcp.c”。此外,“sniffer_eth_ip_tcp.c”(在该链接中提供)只有268行。 – 2010-01-09 20:27:34
我现在也发布了警告。我应该怎么做纠正..(tcp.c也有相同的代码) – trinity 2010-01-10 08:06:38