linux内核的配置

配置:

1.打补丁:patch -pn < xxx.patch;-pn中的n指第几层目录

2.配置:包括3种做法,第一种make menuconfig,一个个修改,显然如果修改的地方多,比较费时费力;第二种找到默认的配置文件,make xxx_defconfig,然后再make menuconfig;第三种是使用厂家的config文件,将该config文件修改为.config,然后放到内核目录中,cp 厂家_config  .config ,然后make menuconfig

3.编译:uboot启动内核时,需要 头部信息+内核,所以编译时 make uImage就是编译内核并在内核头部加上信息

4.找config文件,用命令find -name "*config*"

5,找在哪个文件中有某个字符串,用grep "CONFIG_DM9000" * -nwR

6.查看autoconf.h种看到configxxx都被宏定义为1,所以在c文件中看到configxxx的宏就知道代表1

7.config = y或config =m在c文件中体现不出来,那就在Makefile中找

8.在Makefile中如果看到obj-y = xxx.o,表示该.o文件将会被编译进内核,如果看到obj-m=xxx.o,表示该.o文件会编译成一个模块

9.make uimage时,.config生成autoconf.h,同时生成auto.conf,auto.conf供Makefile的子目录使用,比如定义了obj-$(dm9000)=xxx.o,就会将xxx.o以y或以m的形式编进内核

10.在c源码中看到CONFIG_DM9000这个宏,这个宏在哪里定义,在头文件中定义,那么就在include/linux/autoconf.h中定义了

11.obj-m+=yyy.o  需要yyy.c,yyy.c会被编译成yyy.ko

12..config生成了include/config/auto.conf和include/linux/autoconf.h

13.a.c b.c如何编译成一个模块呢?

obj-m += ab.o

ab-objs := a.o b.o   a.o由a.c生成,b.o由b.c生成

14.要看Makefile的具体生成过程,可以看document下的kbuild文件

15.make uImage 先找到uImage这个字符串的位置,再顺藤摸瓜的找下去

16.uImage就是头部+vmlinux,也就是头部加真正的内核

17.head-y如果在Makefile中找不到,就到/arch/arm/Makefile中找

18.

init-y :=init/

init-y := $(patsubst %/,%/built-in.o,$(init-y))   这两行代码就会变成$(init-y) := init/built-in.o

19.make uImage v=1  ;v=1的意思是打印出更详细的信息

20.阅读linux内核代码,可以从arch/arm/kernel/head.S和arch/arm/kernel/vmlinux.lds入手

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值