现在的位置: 首页 > 综合 > 正文

关于Makefile与Kconfig的理解

2013年08月26日 ⁄ 综合 ⁄ 共 1488字 ⁄ 字号 评论关闭

在Linux系统里,什么都是模块。一块一块的多好啊。想多大就有多大,想多小就有多小,内存管理,进程管理,文件系统,网络系统这些子系统都可以说模块,小的一个驱动文件也是一个模块。简单的说,linux系统内核是慢慢增加功能形成的,怎么形成功能呢?这就是修改内核。想要增加内核的功能,方法就很简单了。系统是软件嘛,那就编写代码呗。怎么加进去呢,模块方式加载。

  把所有的东西看成一块块,就简单多了。再给出自己理解的一个概念。这个世界上只有两样行为,一个是创造,一个是使用。相对应的就是生产者,和使用者了。在我们的linux世界里,我尽归纳为两个角色,一个是开发者,一个是用户。从产品看,开发人员是开发者,使用上市电子产品的人就是用户。然而为了好理解,用这两个概念就可以理解linux里很多东西了。如开发人员使用开发工具,生产开发工具的人就是开发者,开发人员就变成了用户。linux开发人员,使用linux内核,也是用户,但开发人员同时可以开发内核,其又是开发人员。C++有面向对象的思想,这个个伟大的里程碑。linux开发人员只要时刻清醒自己什么时候是什么开发者什么时间点是用户就好理解了。因为开发的目标就是面向用户,达到用户需求。

  很多linux书籍都是大谈开发,但看来看去,发现倒是linux用户说明书。可是又兼开发。
  书上常常说,内核配置。配置什么呢?就是编译的时候想要这个内核有什么功能就添加什么模块,仅此咚咚。为了增加linux我们需要的内核,我们就编写模块,那得注册,这跟结婚的登记一样。内核各种各样的功能,就像政府有各种职能部门似的。

  说到添加模块,增加系统功能,这就不得不说Makefile和Kconfig(2.4内核是config.in)了。
  编写模块的时候是开发,修改Makefile和Kconfig都是也是开发,什么是用户呢?当你敲诸如Make menuconfig 等这些命令的时候,你就是用户了。因为你使用开发者开发的命令,配置你作为开发者时开发的模块或者他人已经开发的模块。总结,所有使用别人的东西时,操作的对象时,自己就是用户。编写模块给谁用,内核(增加系统功能),修改Makefile给谁用?给make 这个工具,修改Kconfig呢?给你或者他人Make menuconfig 时看菜单,合作的过程就是产生.config这个系统的配置。
  每个操作,每个文件,每个模块均是有对象的。有的只有一个对象,有的有几个对象。中国一夫一妻制,但有的国家一夫多妻制。linux内核世界到处蕴含这现实世界的哲学。

  人和人恋爱,讲究缘分,但linux世界不是,任何对象的产生都是规定好的。生物界,主旋律也是同种联姻,linux世界,不能期待对象的产生可以是猫和鹰结婚生下猫头鹰这种怪事。你不懂规则就是你找了头牛,然后对牛弹琴。

  作为开发人员,每个工作的目的都是满足使用其的用户,时刻记住满足你的用户,就如满足你的爱人一样,不要尴尬,不要不自然。所以你要了解他,摸清规律,了解规则。

  作为开发人员时,想用开发环境提供的服务,就只能遵循其规则,只能服从,记住就是。这个不能钻牛角尖。C、C++都是工具,Makefile、Kconfig也是工具,语法什么的,都是人家开发的规则,这不是关键。任何时候的自学,抓住关键就是区分规则和自己能创造的部分。规则是记住,创造是发挥。

  Kconfig只介绍tristate这个项,规则是三态,即不编译,编译为模块,编译为新操作系统,驱动常用。depends on 本Config依赖于另外一个config。help,解释模块的作用。2010-09-18

抱歉!评论已关闭.