hahaxtu 2017-03-17 11:49 采纳率: 0%
浏览 1283

VPATH多路径搜索头文件的问题

初学内核编程,写了一个makefile文件,使用VPATH全局变量设置头文件搜索路径可还是显示找不到

makefile文件内容如下:

 ifneq ($(KERNELRELEASE),)
    obj-m += http.o
else
    PWD := $(shell pwd)
    KVER := $(shell uname -r)
    KDIR := /lib/modules/$(KVER)/build

VPATH = /usr/include:/usr/include/x86_64-linux-gnu:/usr/lib/gcc/x86_64-linux-gnu/4.8/include:/usr/lib/gcc/x86_64-linux-gnu/4.8/include-fixed:/usr/local/include  
default:    
    $(MAKE) -C $(KDIR)  M=$(PWD) modules

all:
    make -C $(KDIR) M=$(PWD) modules 
clean:
    rm -rf *.o *.mod.c *.ko *.symvers *.order *.makers
 endif

代码如下:

 #include <linux/netfilter.h>  
#include <linux/init.h>  
#include <linux/module.h>  
#include <linux/netfilter_ipv4.h>  
#include <linux/ip.h>  
#include <linux/inet.h>  
#include <stdlib.h>
/** 
 * Hook function to be called. 
 * We modify the packet's src IP. 
 */  
unsigned int my_hookfn(const struct nf_hook_ops *ops,  
    struct sk_buff *skb,  
    const struct net_device *in,  
    const struct net_device *out,  
    int (*okfn)(struct sk_buff *))  
{  
    struct iphdr *iph;  
    iph = ip_hdr(skb);
    int * temp = iph;
    iph = realloc(iph,sizeof(iph)+4);
    printk(KERN_INFO"%lu\n",sizeof(*iph));
    return NF_ACCEPT;  
}  

/* A netfilter instance to use */  
static struct nf_hook_ops nfho = {  
    .hook = my_hookfn,  
    .pf = PF_INET,  
    .hooknum = NF_INET_PRE_ROUTING,  
    .priority = NF_IP_PRI_FIRST,  
    .owner = THIS_MODULE,  
};  

static int __init http_init(void)  
{  
    if (nf_register_hook(&nfho)) {  
        printk(KERN_ERR"nf_register_hook() failed\n");  
        return -1;  
    }  
    return 0;  
}  

static void __exit http_exit(void)  
{  
    nf_unregister_hook(&nfho);  
}  

module_init(http_init);  
module_exit(http_exit);  
MODULE_AUTHOR("flyking");  
MODULE_LICENSE("GPL"); 

错误提示如下:

 make -C /lib/modules/3.13.0-113-generic/build  M=/home/test/fk modules
make[1]: 正在进入目录 `/usr/src/linux-headers-3.13.0-113-generic'
  CC [M]  /home/test/fk/http.o
/home/test/fk/http.c:7:20: fatal error: stdlib.h: 没有那个文件或目录
 #include <stdlib.h>
                    ^
compilation terminated.
make[2]: *** [/home/test/fk/http.o] 错误 1
make[1]: *** [_module_/home/test/fk] 错误 2
make[1]:正在离开目录 `/usr/src/linux-headers-3.13.0-113-generic'
make: *** [default] 错误 2
## 

  • 写回答

1条回答 默认 最新

  • abnercn 2017-04-13 02:09
    关注

    gcc 添加-I$(VPATH)

    评论

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!