c++ hello world

c语言的编译步骤
gcc 编译 hello.c -o 生成的目标(可执行文件)名字为 world
预处理
gcc -E hello.c -o hello.i
带#的语句就是预处理指令,预处理指令在预处理的时候处理了
头文件展开:
#include <stdio.h>包含文件stdio.h(预处理时将stdio.h 文件拷贝至预处理文件中)删除注释: 注释有两种方法:
///* */宏替换:
#define代表是声明一个宏,在预处理时会将宏给替代(预处理的时候就会替换)预处理时 不会检查语法错误
条件编译: 条件不成立:
#if 0 -> #endif条件成立#if 1 -> #endif- c语言中
0表示不成立1表示成立
- c语言中
- 宏定义展开、头文件展开、条件编译等,同时将代码中的注释删除,这里并不会检查语法
编译
gcc -S hello.i -o hello.s
- 将预处理文件编译生成汇编文件 检查语法错误
- 检查语法,将预处理后文件编译生成汇编文件
汇编
gcc -c hello.s -o hello.o
汇编文件编译生成二进制文件.o
将汇编文件生成目标文件(二进制文件)
链接
gcc hello.o -o hello
- 设置运行环境,堆栈等,链接其他库
- C语言写的程序是需要依赖各种库的,所以编译之后还需要把库链接到最终的可执行程序中去

| 选项 | 含义 |
| -E | 只进行预处理 |
| -S(大写) | 只进行预处理和编译 |
| -c(小写) | 只进行预处理、编译和汇编 |
| -o file | 指定生成的输出文件名为 file |
| 文件后缀 | 含义 |
| .c | C 语言文件 |
| .i | 预处理后的 C 语言文件 |
| .s | 编译后的汇编文件 |
| .o | 编译后的目标文件 |
一步编译
gcc hello.c -o demo(还是经过:预处理、编译、汇编、链接的过程):




