我跑的程序(该链接是 - 的http:// WWW。 security-freak.net/raw-sockets/sniffer_eth_ip_tcp.c )在我的Fedora Core 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