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)

    评论

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题