内核模块的编译linux documentation/kbuild下有内核构造的细节描述如果我们需要构造模块名称为module.ko,并由两个源文件生成,比如file1.c和file2.c。
正确的makefile可以如下编写:
obj-m := module.o
module-objs := file1.o file2.o
obj-m的赋值说明有一个模块需要从目标文件module.o中构造(GUN make 扩展语法),改从该目标文件中构造的模块名称为module.ko
module-objs的赋值表示,该模块的编译依赖file1.o,file2.o
为了让上述makefile文件正常工作,必须在大的内核构造系统中调用他们。假设内核源码树保存在~/kernel-2.6目录下,用来构造模块的make命令应该是
make -C ~/kernel-2.6 M=‘pwd‘ modeles
上述命令-C表示改编目录到其指定位置,内核源代码目录,其中保存有内核顶层的makefile文件。
M=选项让makefile在构造modules目标之前返回到模块源代码目录。modules目标指向obj-m变量中设定的模块
阅读(1842) | 评论(0) | 转发(2) |