编译器
GCC编译器可以编译C,C++,ObjectiveC。
编译C程序
C程序的代码都是以.c
作为后缀。
#include <stdio.h>
void main(){
printf("Hello world\n");
}
编译gcc hello.c
会在当前目录生成一个a.out
文件。执行./a.out
开始执行程序。
编译过程
预处理
gcc -E hello.c -o hello.i
会将头文件展开。
编译
gcc -S hello.i -o hello.s
将代码编译成汇编指令。
汇编
gcc -c hello.s -o hello.o
生成二进制文件,也叫目标文件。该文件可以被CPU识别。
链接
gcc hello.o -o hello
由于大部分C程序都引用了其他库,因为需要进行链接操作。
规范
虽然我们的函数可以编译通过。但是我们可以打开警告选项
-W
屏蔽所有的警告信息-Wall
显示所有类型的警告-Werror
出现任何类型的警告都停止编译
我们显示警告后,发现有警告。推荐我们使用int main()
。
[root@VM-0-12-centos ~]# gcc hello.c -Wall
hello.c:2:6: warning: return type of ‘main’ is not ‘int’ [-Wmain]
2 | void main(){
| ^~~~