编写makefile文件生成a.o、b.o、b
时间: 2023-12-31 10:03:52 浏览: 125
下面是一个示例 makefile 文件,可以生成 a.o、b.o、b:
```
CC=gcc
CFLAGS=-c -Wall
all: a.o b.o b
a.o: a.c
$(CC) $(CFLAGS) a.c
b.o: b.c
$(CC) $(CFLAGS) b.c
b: a.o b.o
$(CC) a.o b.o -o b
clean:
rm *.o b
```
其中,`CC` 定义了编译器的名称,`CFLAGS` 定义了编译选项,`all` 是 makefile 的默认目标,`a.o` 和 `b.o` 分别对应 `a.c` 和 `b.c` 的编译规则,`b` 对应链接规则,`clean` 是清除目标文件和可执行文件的目标。
你可以将上述内容保存为名为 `makefile` 的文本文件,并在该文件所在目录下执行 `make` 命令来生成 a.o、b.o、b。
相关问题
Linux编写makefile文件生成a.o,b.o,b,运行结果过执行cleaN
好的,让我来解答这个问题。
首先,makefile 文件是用来自动化编译和构建程序的文件。通过 make 命令可以执行 makefile 文件中定义的操作。
下面是一个简单的 makefile 文件示例,用于编译生成 a.o、b.o 和 b 可执行文件:
```
CC = gcc
CFLAGS = -Wall -g
all: b
b: a.o b.o
$(CC) $(CFLAGS) -o b a.o b.o
a.o: a.c
$(CC) $(CFLAGS) -c a.c
b.o: b.c
$(CC) $(CFLAGS) -c b.c
clean:
rm -f *.o b
```
makefile 文件中的第一行定义了编译器的选择,这里选择了 gcc。
第二行定义了编译选项,-Wall 表示显示编译器警告信息,-g 表示生成可调试的程序。
接下来是目标规则,all: b 表示 all 是默认目标,执行 make 命令时会自动执行 b 目标。
b: a.o b.o 表示生成 b 可执行文件需要依赖 a.o 和 b.o 两个目标,如果这两个目标有更新,就会重新执行生成 b 可执行文件的命令。
a.o: a.c 表示生成 a.o 目标需要依赖 a.c 文件,如果 a.c 文件有更新,就会重新执行生成 a.o 目标的命令。
b.o: b.c 表示生成 b.o 目标需要依赖 b.c 文件,如果 b.c 文件有更新,就会重新执行生成 b.o 目标的命令。
最后是一个 clean 目标,用于清除生成的中间文件和可执行文件,执行 make clean 命令时会执行这个目标下的命令。
希望这个例子能够帮助你理解如何编写 makefile 文件。如果还有其他问题,可以继续提问。
用三种不同方法编写Linux编写makefile文件生成a.o,b.o,b,运行结果过执行cleaN
好的,下面我会分别介绍三种不同的方法来编写 Linux 的 makefile 文件,用于生成 a.o、b.o 和 b 可执行文件,同时支持清除中间文件和可执行文件。
方法一:
```
CC = gcc
CFLAGS = -Wall -g
OBJECTS = a.o b.o
all: b
b: $(OBJECTS)
$(CC) $(CFLAGS) $(OBJECTS) -o b
a.o: a.c
$(CC) $(CFLAGS) -c a.c
b.o: b.c
$(CC) $(CFLAGS) -c b.c
.PHONY: clean
clean:
rm -f $(OBJECTS) b
```
方法二:
```
CC = gcc
CFLAGS = -Wall -g
all: b
b: a.o b.o
$(CC) $(CFLAGS) -o b a.o b.o
a.o: a.c
$(CC) $(CFLAGS) -c a.c
b.o: b.c
$(CC) $(CFLAGS) -c b.c
.PHONY: clean
clean:
rm -f *.o b
```
方法三:
```
CC = gcc
CFLAGS = -Wall -g
.PHONY: all clean
all: b
b: a.o b.o
$(CC) $(CFLAGS) -o $@ $^
%.o: %.c
$(CC) $(CFLAGS) -c $< -o $@
clean:
rm -f *.o b
```
这三种方法基本上都是相同的,只是写法上略有差异。其中第三种方法使用了通配符和自动变量,可以减少代码量,使 makefile 文件更加简洁。
不管使用哪种方法,最后都需要添加一个 clean 目标,用于清除中间文件和可执行文件,避免占用空间。
希望这个回答能够帮助你。
阅读全文