ubuntu 8.10/9.04 编译netfilter内核模块遇到的问题

内核编译和嵌入式产品的设计与开发
回复
freshpassport
帖子: 3
注册时间: 2008-03-25 22:46

ubuntu 8.10/9.04 编译netfilter内核模块遇到的问题

#1

帖子 freshpassport » 2009-10-17 14:24

在Ubuntu 9.04 或者8.10下,编译使用netfilter功能的内核模块,总是提示

代码: 全选

/home/source/net_dev1/std1.c: In function `std_init':
/home/source/net_dev1/std1.c:52: warning: assignment from incompatible pointer type
/home/source/net_dev1/std1.c:53: error: `NF_IP_PRE_ROUTING' undeclared (first use in this function)
/home/source/net_dev1/std1.c:53: error: (Each undeclared identifier is reported only once
/home/source/net_dev1/std1.c:53: error: for each function it appears in.)
/home/source/net_dev1/std1.c:55: error: `NF_IP_PRE_FIRST' undeclared (first use in this function)
总是找不到NF_IP_PRE_ROUTING和NF_IP_PRE_FIRST等宏的定义,我查看了一下内核头文件,这两个宏已经定义,并且在代码中引用了正确的头文件。
同样的代码在FC6下可以正确编译运行,请问这个问题可能在哪里?谢谢。
freshpassport
帖子: 3
注册时间: 2008-03-25 22:46

Re: ubuntu 8.10/9.04 编译netfilter内核模块遇到的问题

#2

帖子 freshpassport » 2009-10-17 14:28

我的Makefile如下:

# Makefile 2.6

代码: 全选

MODULE_NAME := test
$(MODULE_NAME)-objs := std1.o std2.o
obj-m += $(MODULE_NAME).o
 
KDIR:=/lib/modules/$(shell uname -r)/build
# PWD=$(shell pwd)
all:
        make -C $(KDIR) M=$(PWD) modules
clean:
        make -C $(KDIR) M=$(PWD) clean
toddbmg
帖子: 62
注册时间: 2007-08-09 0:23
来自: 广东
联系:

Re: ubuntu 8.10/9.04 编译netfilter内核模块遇到的问题

#3

帖子 toddbmg » 2009-10-17 15:16

第一个可能:确保/lib/modules/$(shell uname -r)/build指向你编译的内核的代码目录,检查一下这个内核的目录代码是否够全(比如指向/usr/src/$(shell uname -r)但这里的代码 不全)
第二个可能:看一下是不是因为条件编译使得无法访问到相关的头文件(比如.config导致)
freshpassport
帖子: 3
注册时间: 2008-03-25 22:46

Re: ubuntu 8.10/9.04 编译netfilter内核模块遇到的问题

#4

帖子 freshpassport » 2009-10-17 16:59

toddbmg 写了:第一个可能:确保/lib/modules/$(shell uname -r)/build指向你编译的内核的代码目录,检查一下这个内核的目录代码是否够全(比如指向/usr/src/$(shell uname -r)但这里的代码 不全)
第二个可能:看一下是不是因为条件编译使得无法访问到相关的头文件(比如.config导致)
我看了一下,第一个情况没有出现,配置的内核代码路径是对的,
第二个情况,能否说的清楚点,谢谢
回复