40. (8.0分)有一-个C程序源文件,程序中包括hello2.c print.h print.c,并存放在当前目录下,完成如下会务 (1)写出编译C语言源程序的过程; (2)写一个makefi
时间: 2024-11-15 13:23:40 浏览: 9
在Linux或Unix-like系统上,编译C语言源程序通常分为几个步骤,特别是当有多源文件时。这里是一个基本的Makefile编写示例来管理这个过程:
(1) 编译C语言源程序的过程:
1. 首先,你需要将`hello2.c`、`print.h`和`print.c`这三个源文件分别编译成.o(对象文件)。对于每个.c文件,可以使用GCC(GNU Compiler Collection)或其他C编译器,例如:
```
gcc -c hello2.c # 编译hello2.c生成hello2.o
gcc -c print.c # 编译print.c生成print.o
gcc -c -I. print.h print.c # 在当前目录下查找print.h并编译print.c
```
2. 然后,你需要链接所有的对象文件形成一个可执行文件,如`hello`:
```
gcc hello2.o print.o -o hello
```
这里假设`hello`是最终的程序入口点。
(2) 编写Makefile:
```makefile
CC = gcc # 使用gcc作为默认的编译器
OBJECTS = hello2.o print.o
# 定义如何从源码编译到目标
all: hello
# 编译hello2.c
hello2.o: hello2.c print.h
$(CC) -c hello2.c
# 编译print.c
print.o: print.c print.h
$(CC) -c -I. print.c
# 综合所有对象并生成可执行文件
hello: $(OBJECTS)
$(CC) $^ -o hello
# 清理规则,删除中间产物
clean:
rm -f *.o hello
```
保存这个Makefile到同一个目录下,然后运行`make`命令就可以按照指定的规则编译、链接和清理了。使用`make clean`时,它会删除名为`.o`的临时对象文件和生成的`hello`可执行文件。
阅读全文