用户空间在使用make命令编译过程中,在Makefile中使用 -I选项来指定要包含的头文件的位置。例如
$(MAKE) -I /dir1/dir2/include ...
内核模块编译过程中想要达到同样的效果应该怎么做?
看过内核编译文档/src/Document/kbuild/*。里面说是使用EXTRA_CFLAGS 选项,按照如下方式,但是一直未能起作用。
obj-m:=mymod.o
EXTRA_CFLAGS+=-Iinclud
mymod-objs := mod.o
all:
$(MAKE) -C /lib/modules/$(shell uname -r)/build M=$(shell pwd) modules
clean:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
rm -rf *.o *.ko *.bak *~
内核模块编译中头文件的包含问题
- zongzw
- 帖子: 94
- 注册时间: 2008-03-31 16:12
- zongzw
- 帖子: 94
- 注册时间: 2008-03-31 16:12
Re: 内核模块编译中头文件的包含问题
怎么没有人回复?
- zongzw
- 帖子: 94
- 注册时间: 2008-03-31 16:12
Re: 内核模块编译中头文件的包含问题
知道怎么做了
EXTRA_CFLAGS += -I$(src)/includ
-I$(src)为固定格式
EXTRA_CFLAGS += -I$(src)/includ
-I$(src)为固定格式
-
- 帖子: 6
- 注册时间: 2009-08-02 15:39
Re: 内核模块编译中头文件的包含问题
lzlz,我在些用户空间的程序,想使用<linux/list.h>,但是编译是报错说<linux/list.h>找不到文件。麻烦lz提点一下拉,谢谢。
- zongzw
- 帖子: 94
- 注册时间: 2008-03-31 16:12
Re: 内核模块编译中头文件的包含问题
用户空间的程序include是C lib库。jboo_lee@163.com 写了:lzlz,我在些用户空间的程序,想使用<linux/list.h>,但是编译是报错说<linux/list.h>找不到文件。麻烦lz提点一下拉,谢谢。
当使用#include<linux/list.h>时是引用的/usr/include目录,/usr/include目录下没有linux/list.h文件。
想使用内核中list.h文件的话,可以从/usr/src/linux-$(shell uname -r)/include/linux/中把list.h提取出来放在你的工程目录下使用。