以下是一个适用于C和汇编文件的通用Makefile示例:
# 编译器设置
CC = gcc
AS = nasm
CFLAGS = -Wall -Werror -Wextra
ASFLAGS =
# 目标文件
OBJ_FILES = main.o assembly.o
# 默认目标
all: program
# 生成可执行文件
program: $(OBJ_FILES)
$(CC) $(CFLAGS) -o $@ $^
# 编译C文件
%.o: %.c
$(CC) $(CFLAGS) -c $< -o $@
# 汇编文件
%.o: %.asm
$(AS) $(ASFLAGS) -f elf64 $< -o $@
# 清除生成的文件
clean:
rm -f program *.o
在这个Makefile中,有几个关键点需要注意:
CC
和 AS
变量分别指定了C编译器和汇编器的命令。CFLAGS
和 ASFLAGS
变量分别指定了C和汇编的编译选项。OBJ_FILES
变量列出了所有的目标文件。all
目标是默认目标,它依赖于 program
目标。program
目标生成最终的可执行文件,它依赖于所有的目标文件。%.o: %.c
和 %.o: %.asm
是模式规则,用于指定如何编译C文件和汇编文件。clean
目标用于清除生成的文件。使用这个通用Makefile,你只需要将你的C文件命名为 main.c
,汇编文件命名为 assembly.asm
,然后运行 make
命令即可生成可执行文件。如果需要清理生成的文件,可以运行 make clean
。