以下是一个示例Makefile,用于从C程序生成修改后的、汇编、可重定位和可执行文件:
CC = gcc
CFLAGS = -g -Wall
TARGET = executable_file
all: $(TARGET)
$(TARGET): assembly_file.o object_file.o main_file.o
$(CC) $(CFLAGS) -o $(TARGET) assembly_file.o object_file.o main_file.o
assembly_file.o: assembly_file.s
$(CC) $(CFLAGS) -c assembly_file.s
object_file.o: object_file.c
$(CC) $(CFLAGS) -c object_file.c
main_file.o: main_file.c
$(CC) $(CFLAGS) -c main_file.c
clean:
rm -f $(TARGET) *.o
在上面的示例中,我们假设存在以下文件:
assembly_file.s
:包含汇编代码的文件。object_file.c
:包含C代码的文件。main_file.c
:包含C代码的文件。这个Makefile中的all
规则表示默认的目标是生成可执行文件executable_file
。它依赖于三个目标文件:assembly_file.o
、object_file.o
和main_file.o
。
每个目标文件都有一个对应的规则来生成它们。例如,assembly_file.o
的规则使用gcc
编译器和-c
标志来生成汇编文件的目标文件。
最后,clean
规则用于删除生成的文件。
要使用该Makefile,只需在命令行中执行make
命令即可。它将根据规则和依赖关系自动编译和链接文件,并生成最终的可执行文件。