源程序可以通过以下步骤生成文件:
预处理
预处理阶段主要处理源程序中的预处理指令,如宏定义、条件编译指令和头文件包含指令。预处理后的输出是一个中间文件(.i文件)。预处理命令为:
```bash
gcc -E hello.c -o hello.i
```
或者
```bash
cpp hello.c > hello.i
```
编译
编译阶段将预处理后的文件进行词法分析、语法分析、语义分析及优化,生成汇编代码文件(.s文件)。编译命令为:
```bash
gcc -S hello.i -o hello.s
```
或者使用较新版本的GCC直接合并预编译和编译步骤:
```bash
gcc hello.c
```
汇编
汇编阶段将汇编代码转换为机器可以执行的指令文件(.o文件)。汇编命令为:
```bash
as hello.s -o hello.o
```
或者
```bash
gcc -c hello.s -o hello.o
```
或者
```bash
gcc -c hello.c -o hello.o
```
链接
链接阶段将程序模块中调用的函数和变量的地址修正,生成最终的可执行文件。链接命令为:
```bash
gcc hello.o -o hello
```
总结起来,一个简单的C源程序通过GCC编译器生成可执行文件的命令序列如下:
```bash
gcc hello.c -o hello
```
这个命令会依次执行预处理、编译、汇编和链接步骤,最终生成一个名为`hello`的可执行文件。