gcc
查看系统中gcc版本
gcc -v
准备被编译的程序
main.c
#include <stdio.h>
int main(void)
{
printf("hello world\n");
return 0;
}
编译命令
在该main.c 所处的文件夹下打开终端
执行
gcc main.c -o test
将main.c编译为可执行程序test,其中-o参数用于指定目标文件的名称。
执行该文件
./test
结果
不加 -o test
执行
gcc main.c
结果
说明在不指定目标文件的名称时,默认生成的文件为a.out,执行该文件与执行test结果一致
了解至此,以满足初学者的诉编译上的诉求,之后侧重于学习c语言相关语法即可。
更多编译上的事
编译四步骤:
- 预处理
- 编译
- 汇编
- 链接
预处理
执行命令
gcc -E main.c
可看到终端上有很多打印,该命令使用-E参数,将编译过程停留在预处理之后,显示在终端上的打印为main.c程序的预处理结果
预处理结果较多,我们仍可以使用-o参数将其内容保存至对应的文件中
gcc main.c -E -o preprcess.i
通过preprcess.i文件即可了解该main.c的预处理的结果,预处理后源程序被修改,但仍然为文本文件,形式仍是代码的形式。
同样的使用命令
gcc main.c -S -o comp.s
可得到预处理与编译两步骤之后的结果,该结果为一个汇编文件,此时虽然仍是文本文件,但需要汇编相关的知识才能理解
gcc main.c -c -o asse.o
经历了汇编之后,代码已被转换问二进制文件,此时已经无法正常阅读。
gcc asse.o -o test
最后,将其与标准库链接并生成可执行程序。