linux内核链接脚本是vmlinux.lds.S而不是vmlinux.lds,后者是根据前者的输出,因为前者有很多的宏定义,后者则是完整版。
make oldconfig的作用,首先可以备份.config,生成.config.old。其次如果刚从别的内核里面拷贝一个.config到该内核,针对原来版本内核的配置文件设置来配置新版本的内核。新版内核中和原来版本内核同时存在的配置项不变,但是新添加的配置项就需要你自己手动设置了,并且把拷贝过来的.config 备份成.config.old。
include/config/auto.conf include/linux/autoconf.h .config 这3个文件相关性很大。
既然已经说到这几个文件了,那我就预先来回答一下上面提出来的问题。什么问题?就是配置过程最后产生了用于记载配置结果的 .config ,那么其中的配置结果由谁使用,又是如何使用的问题。我们说在整个Linux内核系统中,有两方面的用户需要关注所记载的配置结果。一个自然是内核构建系统,它需要根据配置结果产生具有指定功能的内核映像;另外一个就是大部分代码为C语言代码的Linux内核本身,它也需要用户的配置结果,主要用来预处理C代码。前者使用配置结果,并不是直接通过 .config 文件来的,而是将其转换成两个文件:include/config/auto.conf 和 include/config/auto.conf.cmd。后者也没办法直接通过 .config 文件来使用配置结果,它需要将其转换成C语言头文件的形式使用,在这里就是文件 include/linux/autoconf.h 。关于这三个文件的内容,我们稍后叙述。