有一个C程序源文件,程序中包括 hello2.c print.h print.c,并存放在当前目录下,完成如下会务 陈功 (1)写出编译C语言源程序的过程; 21020140223 (2)写一个makefile文件.
时间: 2024-11-03 15:20:52 浏览: 26
编译C语言源程序通常涉及以下几个步骤:
1. **编译**:首先,你需要使用`gcc`或`clang`等编译器来编译单个的源文件。对于`hello2.c`和`print.c`,分别编译它们生成目标文件(.o),例如:
```sh
gcc -c hello2.c // 编译hello2.c
gcc -c print.c // 编译print.c
```
如果`print.h`包含头文件,记得在编译时指定它作为预处理器指令 `-I` 的路径:
```sh
gcc -c -I. print.c // 当前目录下查找print.h
```
2. **链接**:接着,将编译后的目标文件与`print.o`一起链接成可执行文件(`a.out` 或其他指定名称):
```sh
gcc hello2.o print.o -o program_name
```
现在来编写一个基本的Makefile文件,用于自动化这些过程。假设我们的程序有两个目标:`hello` 和 `print`(对应`hello2`和`print.c`),并且源文件都在当前目录下:
```makefile
CC = gcc
CFLAGS = -Wall -g
hello: hello2.o print.o
$(CC) $(CFLAGS) hello2.o print.o -o hello
print: print.o
$(CC) $(CFLAGS) print.o -o print
%.o: %.c
$(CC) $(CFLAGS) -c $<
clean:
rm -f *.o hello print
.PHONY: clean
```
在这个Makefile中,`hello` 和 `print` 都依赖于对应的`.o` 文件。`.PHONY` 指令表示`clean`是一个伪目标,不是依赖于真实存在的文件。
要使用这个Makefile,只需在命令行里输入`make`,Makefile就会执行编译、链接和(如果有`clean`任务)清理目标。
阅读全文