用 vi 在同一目录下已经编辑了两个简单的 test 程序,分别为 test.c 和test.h,请先在同一目录下用 vi/gedit 编辑 makefile,用两个目标体实现:然后再将其使用变量替换实现。
时间: 2024-03-23 15:42:14 浏览: 59
好的,让我来为您解答。
首先,您可以在同一目录下创建一个名为“makefile”的文件,然后使用以下内容为其填充:
```
test: test.o test_func.o
gcc -o test test.o test_func.o
test.o: test.c test.h
gcc -c test.c
test_func.o: test_func.c test.h
gcc -c test_func.c
```
在这个makefile中,我们定义了两个目标体:test 和 test_func。test 目标体需要 test.o 和 test_func.o 两个文件才能被编译,而 test_func 目标体只需要 test_func.o 文件。我们使用了 gcc 命令将这些文件编译成可执行文件。
接下来,我们可以使用变量替换来简化这个makefile。您可以将以下内容添加到makefile中:
```
CC=gcc
CFLAGS=-c -Wall
LFLAGS=-Wall
OBJS=test.o test_func.o
all: test test_func
test: $(OBJS)
$(CC) $(LFLAGS) $(OBJS) -o test
test_func: test_func.o
$(CC) $(LFLAGS) test_func.o -o test_func
%.o: %.c test.h
$(CC) $(CFLAGS) $< -o $@
clean:
rm -f *.o test test_func
```
在这个makefile中,我们定义了三个变量:CC,CFLAGS和LFLAGS。CC 变量定义了我们使用的编译器,CFLAGS 定义了编译选项,而 LFLAGS 定义了链接选项。我们还定义了一个 OBJS 变量,它包含了我们需要编译的对象文件。
我们还定义了一个 all 目标体,它编译了 test 和 test_func 两个可执行文件。我们使用了通配符来指定我们需要编译的对象文件,并且使用了 $< 和 $@ 变量来指定依赖项和目标文件。最后,我们定义了一个 clean 目标体,用于清除生成的目标文件和可执行文件。
希望这个回答能够帮助您解决问题!
阅读全文