Linux C 编程开发- C语言编译的过程

75 阅读1分钟

编译器

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 notint’ [-Wmain]
    2 | void main(){
      |      ^~~~