结束第五章,第五章的MAKEFILE

本文介绍了一个具体的MAKEFILE编写实例,详细展示了如何使用GCC、LD等工具,并定义了一系列目标和依赖,实现了内核二进制文件的构建过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    下面就来编写MAKEFILE吧,首先在GCC中有一个选项很不错,就是-M,用来确定依赖关系:

     比如下面这条指令:

     gcc -M -I ./include ./kernel/start.c

  可得下列输出:

    这使得MAKEFILE的编写更简便了。

    MAKEFILE如下:

#Makefile for kernel.bin

KERNEL_ENTRY = 0x30400
ASM = nasm
CC = gcc
LD = ld
ASMFLAGS = -f elf
CFLAGS = -c -I ./include
LDFLAGS = -s -Ttext $(KERNEL_ENTRY)
OBJS = ./kernel/kernel.o ./kernel/start.o ./kernel/global.o ./kernel/i8259.o ./kernel/protect.o ./lib/kliba.o ./lib/klib.o

.PHONY : everything all clean umount

everything : ./kernel.bin

clean :
   rm -f $(OBJS)
   
umount :
   cd ..
   umount /mnt/floppy

all : everything clean

./kernel.bin : $(OBJS)
              $(LD) $(LDFLAGS) -o $@ $(OBJS)
       
./kernel/kernel.o : ./kernel/kernel.asm
       $(ASM) $(ASMFLAGS) -o $@ $<
       
./kernel/start.o : ./kernel/start.c ./include/type.h ./include/proto.h ./include/protect.h ./include/global.h
       $(CC) $(CFLAGS) -o $@ $<
       
./kernel/global.o : ./kernel/global.c ./include/type.h ./include/protect.h
       $(CC) $(CFLAGS) -o $@ $<
       
./kernel/i8259.o : ./kernel/i8259.c ./include/type.h ./include/proto.h
       $(CC) $(CFLAGS) -o $@ $<
       
./kernel/protect.o : ./kernel/protect.c ./include/type.h ./include/proto.h ./include/protect.h ./include/global.h
       $(CC) $(CFLAGS) -o $@ $<
       
./lib/kliba.o : ./lib/kliba.asm
       $(ASM) $(ASMFLAGS) -o $@ $<

./lib/klib.o : ./lib/klib.c ./include/type.h ./include/proto.h
       $(CC) $(CFLAGS) -o $@ $<
      

  由于我们先前已经生成了kernel.bin和相关的目标文件,所以在make的时候会显示:

  所以先clean一下,再make:

    OK,我们的MAKEFILE就写到这了。我们已经彻底完成了第五章的任务。可以自豪而又充满信心的走向进程了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值