六、Linux C 编程 1) 有如下含有 3 个目标体的 makefile 文件: test: kang.o yul.o gcc kang .o yul.o -o test kang.o: kang.c kang.h gcc -Wall -0 -g -c kang.c -o kang.oyul. o: yul.c yul.h gcc -Wall -0 -g -c yul.c -o yul.o 为了简化编写,请将上述文件使用自动变量替换实现。并且根据 makefile的隐含规则,将其在简化。 2) 用 vi 在同一目录下已经编辑了两个简单的 hello 程序,分别为 hello.c 和hello.h,请先在同一目录下用 vi/gedit 编辑 makefile,用一个目标体实现:然后再将其使用变量替换实现。 3) 用 vi 在同一目录下已经编辑了两个简单的 test 程序,分别为 test.c 和test.h,请先在同一目录下用 vi/gedit 编辑 makefile,用两个目标体实现:然后再将其使用变量替换实现。
时间: 2024-03-23 09:41:14 浏览: 76
1) 使用自动变量替换的 makefile 文件如下:
```makefile
# 定义目标体
test: kang.o yul.o
gcc $^ -o $@
# 定义依赖关系和编译规则
kang.o: kang.c kang.h
gcc -Wall -O -g -c $< -o $@
yul.o: yul.c yul.h
gcc -Wall -O -g -c $< -o $@
```
在上述 makefile 文件中,`$^` 表示所有依赖文件,`$<` 表示第一个依赖文件,`$@` 表示目标文件。
2) 使用变量替换的 makefile 文件如下:
```makefile
# 定义变量
CC = gcc
CFLAGS = -Wall -O -g
OBJS = hello.o
# 定义目标体
hello: $(OBJS)
$(CC) $^ -o $@
# 定义依赖关系和编译规则
hello.o: hello.c hello.h
$(CC) $(CFLAGS) -c $< -o $@
```
在上述 makefile 文件中,`CC`、`CFLAGS` 和 `OBJS` 都是变量。`$(OBJS)` 表示所有依赖的目标文件,`$<` 表示第一个依赖文件,`$@` 表示目标文件。
3) 使用变量替换的 makefile 文件如下:
```makefile
# 定义变量
CC = gcc
CFLAGS = -Wall -O -g
TEST_OBJS = test.o test_util.o
HELLO_OBJS = hello.o hello_util.o
# 定义目标体
test: $(TEST_OBJS)
$(CC) $^ -o $@
hello: $(HELLO_OBJS)
$(CC) $^ -o $@
# 定义依赖关系和编译规则
test.o: test.c test.h
$(CC) $(CFLAGS) -c $< -o $@
test_util.o: test_util.c test_util.h
$(CC) $(CFLAGS) -c $< -o $@
hello.o: hello.c hello.h
$(CC) $(CFLAGS) -c $< -o $@
hello_util.o: hello_util.c hello_util.h
$(CC) $(CFLAGS) -c $< -o $@
```
在上述 makefile 文件中,`CC`、`CFLAGS`、`TEST_OBJS` 和 `HELLO_OBJS` 都是变量。`$(TEST_OBJS)` 和 `$(HELLO_OBJS)` 表示所有依赖的目标文件,`$<` 表示第一个依赖文件,`$@` 表示目标文件。
阅读全文