史上最经典的Linux内核学习方法论
Makefile不是Make Love 从前在学校,混了四年,没有学到任何东西,每天就是逃课,上网,玩游戏,睡觉.毕业的时候,人家跟我说Makefile我完全不知,但是一说Make Love我就来劲了,现在想来依然觉得丢人. 毫不夸张地说,Kconfig和Makefile是我们浏览内核代码时最为依仗的两个文件.基本上,Linux内核中每一个目录下边都会有一个Kconfig文件和一个Makefile文件.对于一个希望能够在Linux内核的汪洋代码里看到一丝曙光的人来说,将它们放在怎么重要的地位都不过分. 我们去香港,通过海关的时候,总会有免费的地图和各种指南拿,有了它们在手里我们才不至于无头苍蝇般迷惘的行走在陌生的街道上.即使在内地出去旅游的时候一般来说也总是会找份地图,当然了,这时就是要去买了,拿是拿不到的,不同的地方有不同的特色, 只不过有的特色是服务,有的特色是索取. Kconfig和Makefile就是Linux Kernel迷宫里的地图.地图引导我们去认识一个城市,而Kconfig和Makefile则可以让我们了解一个Kernel目录下面的结构.我们每次浏览kernel寻找属于自己的那一段代码时,都应该看看目录下的这两个文件. 利用Kconfig和Makefile寻找目标代码 就像利用地图寻找目的地一样,我们需要利用Kconfig和Makefile来寻找所要研究的目标代码.比如我们打算研究U盘驱动的实现,U盘是一种storage设备,我们应该先进入到drivers/usb/storage/目录.但是该目录下的文件很多,那么究竟哪些文件才是我们需要关注的?这时就有必要先去阅读Kconfig和Makefile文件. 对于Kconfig文件,我们可以看到下面的选项. 显然,这个选项和我们的目的没有关系.它专门针对Datafab公司的产品,其次虽然CompactFlash reader是一种flash设备,但显然不是U盘.drivers/usb/storage目录下的代码是针对usb mass storage这一类设备,而不是针对某一种特定的设备.U盘只是usb mass storage设备中的一种.再比如: 很显然这个选项是有关SanDisk产品的,并且针对的是SM卡,同样不是U盘,我们也不需要去关注. 事实上,很容易确定,只有选项CONFIG_USB_STORAGE才是我们真正需要关注的. 接下来阅读Makefile文件. 前面通过Kconfig文件的分析,我们确定了只需要去关注CONFIG_USB_STORAGE选项.在Makefile文件里查找CONFIG_USB_STORAGE,从第9行得知,该选项对应的模块为usbstorage.Kconfig文件里的其他选项我们都不需要关注,Makefile的11~22行可以忽略.第24行意味着我们只需要关注 scsiglue.c、protocol.c、transport.c、usb.c、initializers.c以及它们同名的.h头文件. Kconfig和Makefile很好的帮助我们定位到了所要关注的目标,就像我们到一个陌生的地方要随身携带地图,当我们学习Linux内核时,也要谨记寻求Kconfig和Makefile的帮助. 透过现象看本质,兽兽门无非就是一些人体艺术展示.同样往本质里看过去,学习内核,就是学习内核的源代码,任何内核有关的书籍都是基于内核,而又不高于内核的. 既然要学习内核源码,就要经常对内核代码进行分析,而内核代码千千万,还前仆后继的不断往里加,这就让大部分人都有种雾里看花花不见的无助感.不过 不要怕,孔老夫子早就留给我们了应对之策:敏于事而慎于言,就有道而正焉,可谓好学也已.这就是说,做事要踏实才是好学生好同志,要遵循严谨的态度,去理 解每一段代码的实现,多问多想多记.如果抱着走马观花,得过且过的态度,结果极有可能就是一边看一边丢,没有多大的收获. 假设全国房价上涨1.5%,假设80后局长是农民子弟??,既然我们的人生充满了假设,那么我在这里假设你现在就迫不及待的希望研究内 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |