主题 : 对手册的一点点补充: 关于编译驱动模块 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 7366
精华: 0
发帖: 45
金钱: 450 两
威望: 440 点
综合积分: 90 分
注册时间: 2009-07-12
最后登录: 2010-07-15
楼主  发表于: 2009-08-06 16:58

 对手册的一点点补充: 关于编译驱动模块

手册中介绍内核编译过程时用的 make modules命令。

但这样做实际上是编译了选中的所有模块,所需时间比较多。另外也有网友出现了某些模块出错从而停止编译的问题。

实际上,可以只编译我们需要编译的模块。从make自带的帮助信息(make help)可以知道,
make <dir>/ 可以编译目录(可包含子目录)下的所有模块,
make <dir>/[file] 可以编译指定的模块。

比如编译自带的驱动演示,qq2440_hello.c,可以在配置了Makefile和Kconfig之后执行

make drivers/char/qq2440_hello.o  (注意这里是.o不是.c)
然后
make drivers/char/qq2440_hello.ko
编译就完成了,只需要几秒钟时间
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
1楼  发表于: 2009-08-06 17:42
手册的方法的确不太合适,make modules适用于编译内核中所有需要重新编译的模块。
Linux Device Drive 3rd edition (LDD3)第二章"Building and Running Modules"里有关于如何编译内核模块的完整过程,那比较适合自己写的内核模块编译。
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
级别: 新手上路
UID: 7366
精华: 0
发帖: 45
金钱: 450 两
威望: 440 点
综合积分: 90 分
注册时间: 2009-07-12
最后登录: 2010-07-15
2楼  发表于: 2009-08-06 17:52

 回 1楼(kasim) 的帖子

呵呵,确实很期待今后的随机光盘能附带Linux Device Drive这本电子书 :-)
one more time~ one more chance~
级别: 侠客
UID: 7776
精华: 1
发帖: 73
金钱: 675 两
威望: 503 点
综合积分: 166 分
注册时间: 2009-07-28
最后登录: 2020-06-08
3楼  发表于: 2009-08-06 18:27