(原创)第二章 Getting Started with the Kernel(Part2)

1、编译内核
在完成了对内核的配置后,接下来就是编译内核了,对于2.6系列的内核,不再需要在编译前进行make dep的步骤,依赖关系会自动进行维护,直接使用make即可,也不再需要用显式的指定编译类型如bzImage,Makefile的规则会处理一切。[color=blue]编译过程还会在源代码目录的根目录下生成System.map,在调试过程中用它来将内存地址转换到函数和变量名,是非常有用的,我们将在后面说到[/color]

2、最小化编译噪声
在编译时命令行中会打印出无数的输出信息,可以通过重定向方式忽略make的输出:
make >../somefile
make > /dev/null

前者将输出重定向到文件中,后者直接忽略所有的输出。

love的观点是通常用后者,但是我个人认为需要看情况,除非在你完全确定编译器版本等没有问题时,后者是OK的;[color=blue]但是对于很多跨平台开发,在不同的linux发布版本上,使用很多不同的cross-compile而言,初期很可能在出现各种编译器不匹配的情况,需要排查warnings and errors,所以前者好些吧[/color]

3、生成多个build任务
make提供了拆分build过程到多个任务的特性,各个任务可以独立的并行运行,可以显著加速多处理系统的编译速度。
make -jn 其中n表示要生成的任务数。通常的实践是一个处理器生成1-2个任务。

4、安装内核
书中love提到安装内核是和体系结构以及bootloader相关的,并且建议一定要保留1、2个确知可以正常工作的内核版本,以防新编译的内核出现问题。很通常的优秀的工作方法,不是吗?我个人可能会更倾向于使用svn之类的版本控制系统,尽管有点夸张,但是当过了10天半月,谁会完全记得改了什么呢,良好的习惯很重要。

[color=blue]安装内核是手动完成的,以使用grub的x86为例,将生成的bzImage copy到/boot目录下,以
vmlinuz-version方式命名,然后修改/boot/grub/grub.conf,为新内核添加一个条目即可。[/color]

安装模块和安装应用程序很类似,自动就可以完成了,root下运行
make modules_install
就会把所有编译后的模块安装到/lib下


参考资料
1、Linux Kernel Development (2nd Edition) Robert Love 机械工业出版社
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值