全部博文(668)
分类:
2009-06-01 08:37:43
若在内核源码树中编译模块, 如果不新建子目录, 那么只需修改当前目录的Makefile, 否则应该在当前新建的子目录中新建Makefile指定编译选项, 并修改上层目录的Makefile以让kbuild能够进入新建的子目录. |
obj-m += hello.o这样, 只需在当前目录调用 $ sudo make 就可以完成上面的工作. 调用 $ sudo make clean 将删除所有新生成的文件.
all:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
clean:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
上面的例子中只讨论了所有的代码在一个文件中的情况. 若代码分布在多个源文件中, 比如file1.c, file2.c, 生成hello.ko. 应该这样写Makefile: obj-m := hello.o hello-objs := file1.o file2.o 注意, 虽然我们的目的是生成.ko文件, 但在Makefile中写为.o! |
chinaunix网友2009-07-18 00:43:11
请问一下我按照您说的方法进行编译,然而提示下列编译错误: *** No rul to make target 'kernel/bounds.c', need by 'kernel/bounds.c'. Stop. 请教一下这个问题,谢谢。我的邮箱songshide@hotmail.com