您的位置:首页 > 运维架构 > Linux

《Linux内核完全剖析-基于0.12内核》第四章的简单多任务内核Makefile的注释

2013-05-20 19:58 387 查看
赵炯老师的《Linux内核完全剖析-基于0.12内核》第四章的简单多任务内核,也就是不断输出AAAAABBBBB的那个最简单的内核示例,源码部分书中解释的很清楚了,但是如何编译组织文件就要看makefile。现在将其注释如下,如有不当之处,希望大家指教。

# Makefile for the simple example kernel.

#boot.s是用as86和ld86编译链接

#head.s是用gcc,这点与Linux0.12不同

AS86 =as86 -0 -a

LD86 =ld86 -0

AS =gas

LD =gld

LDFLAGS =-s -x -M

all: Image

Image: boot system

#dd为Unix标准命令,bs表示一次读写字节数,if=input file,of=outputfile,

#skip为跳过输入文件的bs开始读取,seek为跳过输出文件的bs处开始写入。



#跳过boot.s的头32个字节,即跳过Minix 二进制首部信息32字节,输入在第一个扇区,即引导扇区512字节

dd bs=32 if=boot of=Image skip=1



#跳过1024(2*512) 字节gcc首部,将剩余复制在第二扇区,即从512字节开始

dd bs=512 if=system of=Image skip=2 seek=1

sync

disk: Image

#Linux下/dev/fd0 是第一个软驱,这条指令将新启动文件Image写入/dev/fd0

dd bs=8192 if=Image of=/dev/fd0

sync;sync;sync

head.o: head.s

# > System.map 是为-M选项服务的,表示gld需要将连接映像重定向在System.map文件中

system: head.o

$(LD) $(LDFLAGS) head.o -o system > System.map

boot: boot.s

$(AS86) -o boot.o boot.s

$(LD86) -s -o boot boot.o

clean:

rm -f Image System.map core boot *.o system
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐