Chinaunix首页 | 论坛 | 博客
  • 博客访问: 254378
  • 博文数量: 37
  • 博客积分: 480
  • 博客等级: 下士
  • 技术积分: 443
  • 用 户 组: 普通用户
  • 注册时间: 2012-05-13 12:36
文章分类
文章存档

2013年(8)

2012年(29)

分类: LINUX

2012-08-12 15:07:50

内核模块的编译
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变量中设定的模块



阅读(1837) | 评论(0) | 转发(2) |
给主人留下些什么吧!~~