linux 内核生成,7.2.3 Linux内核的生成

7.2.3  Linux内核的生成

Linux内核默认编译的方式如下所示:

$ makeARCH=CROSS_COMPILE=

编译开始之后,将通过各个目录中的Makefile结合各个CONFIG_*配置选项对各个文件进行编译,生成各个.o文件,然后目录中的各个目标文件将被连接,之后生成名称为built-in.o的文件。编译的过程也会产生一些自动生成的头文件,如:include/linux/version.h表示内核的版本。

LD      vmlinux

SYSMAP  System.map

SYSMAP  .tmp_System.map

MODPOST vmlinux

OBJCOPY arch/arm/boot/Image

Kernel: arch/arm/boot/Image is ready

AS      arch/arm/boot/compressed/head.o

GZIP    arch/arm/boot/compressed/piggy.gz

AS      arch/arm/boot/compressed/piggy.o

CC      arch/arm/boot/compressed/misc.o

SHIPPED arch/arm/boot/compressed/lib1funcs.S

AS      arch/arm/boot/compressed/lib1funcs.o

LD      arch/arm/boot/compressed/vmlinux

OBJCOPY arch/arm/boot/zImage

Kernel: arch/arm/boot/zImage is ready

提示:内核编译过程中显示的CC、LD、AS等命令表示都是调用了交叉工具,而HOSTCC等则是调用主机本身的工具。

内核生成的几个文件在根目录、arch/arm/boot/目录和arch/arm/boot/compressed/目录中:

vmlinux.o是连接后内核的目标文件。

vmlinux(根目录)是ELF格式的内核。

System.map是内核的符号表。

Image是二进制的内核文件,由vmlinux转换而成。

vmlinux(compressed目录压缩)是经过压缩的vmlinux映像(通过gzip 算法压缩)和解压缩程序的组合体,也是ELF格式。

zImage是解压缩程序和压缩内核的结合。

内核编译后,也会生成相关的模块,模块以ko为后缀名。模块不是内核映像的一部分。

在键入make的时候可以增加一个目标为参数。

zImage:表示生成内核。

modules:表示生成各种内核模块。

uImage:表示生成要通过U-Boot启动的内核。

如果需要生成uImage,则需要系统中具有mkimage工具,这个工具的格式如下所示:

$ mkimage

Usage: mkimage -l image

-l==>list image header information

mkimage [-x] -A arch -O os -T type -C comp -a addr -e ep -n name -d data_file[:data_file...] image

-A==>set architecture to 'arch'

-O==>set operating system to 'os'

-T==>set image type to 'type'

-C==>set compression type 'comp'

-a==>set load address to 'addr' (hex)

-e==>set entry point to 'ep' (hex)

-n==>set image name to 'name'

-d==>use image data from 'datafile'

-x==>set XIP (execute in place)

uImage常常从zImage生成,通常是在uImage上增加一个64字节(0x40)的头信息。描述这个内核的版本、加载位置、生成时间、大小等信息。

利用mkimage在命令行直接生成zImage的一个命令如下所示:

$ mkimage -n 'linux-2.6.35' -A arm -O linux -T kernel -C none -a 0x30008000 -e 0x30008040 -n "S3C2440" -d zImage uImage

其中最重要的是由-a指定的加载地址和由-e指定的运行地址,它们需要与内核的编译信息的相符合。

【责任编辑:book TEL:(010)68476606】

点赞 0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值