赵炯老师的《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 |
《Linux内核完全剖析-基于0.12内核》第四章的简单多任务内核Makefile的注释
最新推荐文章于 2021-01-24 00:22:44 发布