史上最牛的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文件,我们可以看到下面的选项。
#div_code img{border:0px;} config USB_STORAGE_DATAFABbool "Datafab Compact Flash Reader support (EXPERIMENTAL)"
depends on USB_STORAGE && EXPERIMENTAL
help
Support for certain Datafab CompactFlash readers.
Datafab has a web page at <http://www.datafabusa.com/>.
显然,这个选项和我们的目的没有关系。首先它专门针对Datafab公司的产品,其次虽然CompactFlash reader是一种flash设备,但显然不是U盘。因为drivers/usb/storage目录下的代码是针对usb mass storage这一类设备,而不是针对某一种特定的设备。U盘只是usb mass storage设备中的一种。再比如:
#div_code img{border:0px;} config USB_STORAGE_SDDR55bool "SanDisk SDDR-55 SmartMedia support (EXPERIMENTAL)"
depends on USB_STORAGE && EXPERIMENTAL
help
Say Y here to include additional code to support the Sandisk SDDR-55
SmartMedia reader in the USB Mass Storage driver.
- linux内核内存管理学习之一(基本概念,分页及初始化)
- linux内核学习笔记:中断的下半部分
- 学习操作系统和Linux内核的新体会
- Linux内核学习笔记一
- Linux内核源码学习网页版
- Linux内核与驱动开发学习总结:initcall 和contain_of宏(十)
- Linux内核学习-字符设备驱动学习(一)
- 学习linux内核能做什么?
- Linux内核学习相关资料
- [收藏学习]Linux内核虚拟机 学习KVM架构及其优点
- Linux内核之进程管理(学习笔记)
- Linux内核分析——第五周学习笔记
- Linux内核(4) - 内核学习的心理问题
- 有矢而发,触类旁通[内核学习的方法论]
- 写给Linux内核新手-关于Linux内核学习的误区
- linux内核学习的屠龙刀、倚天剑(需要搭配硬件调试环境)
- linux学习笔记-读《Linux设备驱动开发详解》~第三章 Linux内核及内核编程
- linux内核学习(4)老法子---
- IT人的学习方法论(全)
- linux内核学习(5)山重水复疑无路*