当前位置:  技术问答>linux和unix

用gcc编译有一堆堆错误,高手帮忙啊

    来源: 互联网  发布时间:2015-08-17

    本文导语:  源代码是用hook 抓包;如下:        #define MODULE          #include  #include  #include  #include  #include  #include  #include  #include  #include  #include  #include  #include  #include       static struct nf_hook_ops nfho; unsigned cha...

源代码是用hook 抓包;如下:
 
    
#define MODULE
        
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
    
static struct nf_hook_ops nfho;
unsigned char* ip = "x7fx00x00x01";
unsigned char* drop_ip = "xC0xA8x08xC9";
        
unsigned int hook_func(unsigned int hooknum,
                       struct sk_buff **skb,
                       const struct net_device *in,
                       const struct net_device *out,
                       int (*okfn)(struct sk_buff *))
{   
        struct sk_buff* sb = *skb;
        struct tcphdr *tcp = NULL;
        unsigned int d_ip ,s_ip = 0;
        unsigned int d_port = 0,s_port = 0;
        if( sb->nh.iph->protocol == IPPROTO_TCP )
                tcp = (struct tcphdr *)((sb->data) + (sb->nh.iph->ihl * 4));
        d_ip = sb->nh.iph->daddr;
        s_ip = sb->nh.iph->saddr;
        if( tcp )
        {
                d_port = tcp->source;
                s_port = tcp->dest;
        }
        if( sb->nh.iph->saddr == *(unsigned int*)drop_ip )
        {
                        printk( "Droped packet from ... %d.%d.%d.%d:%dn", NIPQUAD(s_ip), s_port );
                        return NF_DROP;
        }
//      printk( "FROM:%d.%d.%d.%d:%d TO:%d.%d.%d.%d:%d ETH:%sn",
//      NIPQUAD(s_ip), s_port, NIPQUAD(d_ip), d_port, in->name );
        return NF_ACCEPT;
}

int init_module()
{
        printk( "begin init module test2n" );
    nfho.hook     = hook_func;
    nfho.hooknum  = NF_IP_PRE_ROUTING;
    nfho.pf       = PF_INET;
    nfho.priority = NF_IP_PRI_FIRST;

    nf_register_hook(&nfho);
        printk("init module test2n");
    return 0;
}

void cleanup_module()
{
    nf_unregister_hook(&nfho);
        printk("cleanup module test2n");
}

MODULE_LICENSE("GPL");




      用“gcc -c test3.c -o test3.o -Wall”编译;有如下错误
In file included from /usr/include/linux/cpumask.h:8,
                 from /usr/include/linux/sched.h:14,
                 from /usr/include/linux/module.h:9,
                 from hook.c:14:
/usr/include/linux/bitmap.h: In function `bitmap_shift_right':
/usr/include/linux/bitmap.h:85: error: `__shr_tmp' undeclared (first use in this
 function)
/usr/include/linux/bitmap.h:85: error: (Each undeclared identifier is reported o
nly once
/usr/include/linux/bitmap.h:85: error: for each function it appears in.)
/usr/include/linux/bitmap.h: In function `bitmap_shift_left':
/usr/include/linux/bitmap.h:98: error: `__shl_tmp' undeclared (first use in this
 function)
In file included from /usr/include/linux/sched.h:14,
                 from /usr/include/linux/module.h:9,
                 from hook.c:14:
/usr/include/linux/cpumask.h:10:5: missing binary operator before token "("
/usr/include/linux/cpumask.h:34:5: missing binary operator before token "("
In file included from /usr/include/asm/siginfo.h:4,
                 from /usr/include/linux/signal.h:7,
                 from /usr/include/linux/sched.h:24,
                 from /usr/include/linux/module.h:9,
                 from hook.c:14:
/usr/include/asm-generic/siginfo.h: At top level:
/usr/include/asm-generic/siginfo.h:53: error: size of array `_pad' is too large
In file included from /usr/include/linux/gfp.h:4,
                 from /usr/include/linux/slab.h:15,
                 from /usr/include/linux/percpu.h:4,
                 from /usr/include/linux/sched.h:30,
                 from /usr/include/linux/module.h:9,
                 from hook.c:14:
/usr/include/linux/mmzone.h:333: error: parse error before '(' token
/usr/include/linux/mmzone.h:334: error: parse error before numeric constant
In file included from /usr/include/linux/module.h:20,
                 from hook.c:14:
/usr/include/asm/module.h:54:2: #error unknown processor family
In file included from /usr/include/linux/mm.h:206,
                 from /usr/include/linux/skbuff.h:26,
                 from hook.c:16:
/usr/include/linux/page-flags.h:119: error: `CONFIG_X86_L1_CACHE_SHIFT' undeclar
ed here (not in a function)
/usr/include/linux/page-flags.h:119: error: requested alignment is not a constan
t
In file included from hook.c:18:
/usr/include/linux/ip.h:84:22: net/sock.h: No such file or directory
/usr/include/linux/ip.h:86:22: net/flow.h: No such file or directory
In file included from hook.c:18:
/usr/include/linux/ip.h:145: error: field `fl' has incomplete type
/usr/include/linux/ip.h:155: error: field `sk' has incomplete type
In file included from hook.c:19:
/usr/include/linux/tcp.h:193:22: net/sock.h: No such file or directory
In file included from hook.c:19:
/usr/include/linux/tcp.h:381: error: field `sk' has incomplete type
In file included from /usr/include/linux/irq.h:20,
                 from /usr/include/asm/hardirq.h:6,
                 from /usr/include/linux/interrupt.h:11,
                 from /usr/include/linux/netdevice.h:490,
                 from hook.c:21:
/usr/include/asm/irq.h:16:25: irq_vectors.h: No such file or directory
In file included from /usr/include/asm/hardirq.h:6,
                 from /usr/include/linux/interrupt.h:11,
                 from /usr/include/linux/netdevice.h:490,
                 from hook.c:21:
/usr/include/linux/irq.h:68: error: `CONFIG_X86_L1_CACHE_SHIFT' undeclared here
(not in a function)
/usr/include/linux/irq.h:68: error: requested alignment is not a constant
/usr/include/linux/irq.h:70: error: `NR_IRQS' undeclared here (not in a function
)
In file included from /usr/include/linux/irq.h:72,
                 from /usr/include/asm/hardirq.h:6,
                 from /usr/include/linux/interrupt.h:11,
                 from /usr/include/linux/netdevice.h:490,
                 from hook.c:21:
/usr/include/asm/hw_irq.h:28: error: `NR_IRQ_VECTORS' undeclared here (not in a                                              function)
/usr/include/asm/hw_irq.h:31: error: `NR_IRQS' undeclared here (not in a functio                                             n)
In file included from /usr/include/linux/interrupt.h:11,
                 from /usr/include/linux/netdevice.h:490,
                 from hook.c:21:
/usr/include/asm/hardirq.h:13: error: `CONFIG_X86_L1_CACHE_SHIFT' undeclared her                                             e (not in a function)
/usr/include/asm/hardirq.h:13: error: requested alignment is not a constant
hook.c: In function `init_module':
hook.c:64: error: invalid use of undefined type `struct nf_hook_ops'
hook.c:65: error: invalid use of undefined type `struct nf_hook_ops'
hook.c:66: error: invalid use of undefined type `struct nf_hook_ops'
hook.c:67: error: invalid use of undefined type `struct nf_hook_ops'
hook.c:69: warning: implicit declaration of function `nf_register_hook'
hook.c: In function `cleanup_module':
hook.c:76: warning: implicit declaration of function `nf_unregister_hook'
hook.c:80:23: warning: no newline at end of file
/usr/include/linux/netdevice.h: At top level:
hook.c:28: error: storage size of `nfho' isn't known

|
这个代码怎么看着那么眼熟呢-_-!

|
搞错路径了吧?去掉前面的linux看看

|
是不是编译前的配置有误?如与你的硬件不匹配?

    
 
 

您可能感兴趣的文章:

  • arm-linux-gcc交叉编译出错,但gcc编译没错,什么原因呢???
  • 嵌入式linux开发:一段代码在windows平台用VC编译运行正常,在linux平台用gcc编译运行正常,但是用arm-linux-gcc编译在嵌入式板子上运行就不正常.
  • GCC3.4可以编译2.4内核吗 如何查看某版本内核是用哪个版本gcc编译的
  • 使用popen来执行gcc命令,如何根据读出来的gcc的输出来判断gcc是否编译成功?
  • 问:关于gcc编译器和g++编译器
  • 求一个编译好的的gcc编译器
  • 编译GCC时能不能只编译C/C++的编译器?
  • gcc编译时出错,gcc: installation problem, cannot exec `as': 没有那个文件或目录!!!求助呀呀!!!!!
  • 建立较差编译环境,编译gcc-3.4.4出错
  • gcc与arm-linux-gcc编译的问题???
  • Linux下gcc编译时,如何以静态链接的形式编译?
  • Solaris8,安装了iconv,gcc和gcclib,然后用gcc编译c程序出错。
  • 使用eclipse 加入arm-elf-gcc 或arm-linux-gcc 编译器为什么不好使
  • 是否必须用同一版本GCC编译内核、应用程序、库甚至GCC自己?
  • linux x86_64下由于拷贝gcc的lib目录导致gcc编译器出错
  • 浙ICP备11055608号-3 iis7站长之家
  • 使用gcc编译器进行代码编译出来的程序是否遵循gpl协议
  • 为什么g++编译通过了,而gcc却编译通过不了???
  • ubuntu 10.10出现极其诡异的情况,使用gcc编译没任何反应,可以继续输入,但是不提示任何错误;使用make编译效果一样;
  • 求助:当用 gcc 编译时没,加上优化选项 -02 ,可是提示是 gcc: unrecognized option `-02'
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 一套未安装gcc的Linux中安装gcc rpm包时时出现错误
  • 我在Solaris8上安装了gcc3.3Solaris8,但是总是出错!错误如下:gcc: syntax error at line 1: `(' unexpected
  • gcc编译错误
  • 编译 cross-gcc 的错误
  • gcc升级,提示insn-attrtab.o错误
  • gcc-4.4.2升级错误
  • 如何将gcc编译的警告及错误信息保存到文件
  • GCC curses动态库链接的错误
  • 如何将gcc的编译错误输出到一个文本文件?
  • arm-linux-gcc编译XML错误
  • 能否把gcc的错误提示输出到一个文件中?
  • gcc 如何打印上此的错误信息
  • 大神们好! yum install gcc出现错误,请大神指点!
  • 使用arm-linux-gcc编译,出现compilation of header file requested错误
  • gcc编译中出现的这种错误提示 stray '357' in program
  • gcc 编译时错误
  • gcc运行程序出现错误,求助。。。
  • linux环境下gcc编译器对sin函数出现的错误
  • gcc helloworld 出现错误......
  • GCC编译错误,大家来看看。十万火急!!!!
  • Linux下GCC内置原子操作函数(多线程资源访问)介绍
  • 命令:mips_fp_le-gcc,mipsel-gcc 是什么意思?跟一般的gcc有什么区别?
  • 怎样升级我的GCC呀,我用的RH7.2,GCC 2.96 ,我从网上下载了一个gcc-3.2.3.tar.gz
  • arm-elf-gcc 和 arm-linux-gcc有什么区别?arm-elf-gcc里的elf代表什么?
  • gcc-ccore、avr-gcc及arm-gcc的区别
  • gcc在哪里?bash:gcc:command not found
  • 如何删掉GCC3.0(我需要GCC2.0-----)
  • Windows版GCC TDM-GCC
  • 急问:如何卸掉gcc 3.2庄gcc 2.96
  • 有人遇到过吗,在安装GCC时提示,"checking gcc ...no "
  • GCC无法安装的问题,希望有人帮我( Debian 4.04ra无法安装GCC)


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3