Makefile进阶使用

本文介绍了Makefile的进阶使用,包括通过shell语句和find命令查找C文件,利用wildcard、notdir和patsubst函数处理文件路径,以及理解Makefile中的编译器、链接器设置和关键变量如$@、$^、$<的含义。同时,提供了一个适用于大多数简单工程的通用Makefile模板。
摘要由CSDN通过智能技术生成

Makefile进阶使用

Makefile有一本手册,按道理来说我应该看手册学习,但是我懒,而且我觉得有那个时间学那么多肯定会忘记的东西还不如玩点游戏来得实在

以这一个Makefile为例,以后我写的Makefile都以这个为模板

#!Makefile

C_SOURCES = $(shell find . -name "*.c")
C_OBJECTS = $(patsubst %.c, %.o, $(C_SOURCES))
S_SOURCES = $(shell find . -name "*.s")
S_OBJECTS = $(patsubst %.s, %.o, $(S_SOURCES))

CC = gcc
LD = ld
ASM = nasm

C_FLAGS = -c -Wall -m32 -ggdb -gstabs+ -nostdinc -fno-pic -fno-builtin -fno-stack-protector -I include
LD_FLAGS = -T scripts/kernel.ld -m elf_i386 -nostdlib
ASM_FLAGS = -f elf -F stabs

all: $(S_OBJECTS) $(C_OBJECTS) link update_image
	bochs

.c.o:
	@echo 编译代码文件 $< ...
	$(CC) $(C_FLAGS) $< -o $@

.s.o:
	@echo 编译汇编文件 $< ...
	$(ASM) $(ASM_FLAGS) $<

link:
	@echo 链接内核文件...
	$(LD) $(LD_FLAGS) $(S_OBJECTS) $(C_OBJECTS) -o ymwm_kernel

.PHONY:clean
clean:
	$(RM) $(S_OBJECTS) $(C_OBJECTS) ymwm_
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值