c++ hello world

2022-05-18 15:17:23 浏览数 (1)

c语言的编译步骤

代码语言:javascript复制
gcc 编译  hello.c -o 生成的目标(可执行文件)名字为 world

预处理
代码语言:javascript复制
gcc -E hello.c -o hello.i

带#的语句就是预处理指令,预处理指令在预处理的时候处理了

  • 头文件展开: #include <stdio.h> 包含文件stdio.h预处理时将stdio.h 文件拷贝至预处理文件中
  • 删除注释: 注释有两种方法: // /* */
  • 宏替换: #define 代表是声明一个宏,在预处理时会将宏给替代 (预处理的时候就会替换)
  • 预处理时 不会检查语法错误
  • 条件编译: 条件不成立: #if 0 -> #endif 条件成立 #if 1 -> #endif
    • c语言中 0表示不成立 1表示成立
  • 宏定义展开、头文件展开、条件编译等,同时将代码中的注释删除,这里并不会检查语法
编译
代码语言:javascript复制
gcc -S hello.i -o hello.s
  • 预处理文件编译生成汇编文件 检查语法错误
  • 检查语法,将预处理后文件编译生成汇编文件
汇编
代码语言:javascript复制
gcc -c hello.s -o hello.o
  • 汇编文件编译生成二进制文件.o
  • 将汇编文件生成目标文件(二进制文件)
链接
代码语言:javascript复制
gcc    hello.o -o hello

  • 设置运行环境堆栈等,链接其他库
  • C语言写的程序是需要依赖各种库的,所以编译之后还需要把库链接到最终的可执行程序中去

选项

含义

-E

只进行预处理

-S(大写)

只进行预处理和编译

-c(小写)

只进行预处理、编译和汇编

-o file

指定生成的输出文件名为 file

文件后缀

含义

.c

C 语言文件

.i

预处理后的 C 语言文件

.s

编译后的汇编文件

.o

编译后的目标文件

一步编译
代码语言:javascript复制
gcc hello.c -o demo(还是经过:预处理、编译、汇编、链接的过程):

0 人点赞