gcc编译的4步骤
-
预处理 (hollo.c->hello.i)
gcc -E
-
展开宏,头文件
-
替换编译条件
-
删除注释,空行,空白
-
-
编译 (hello.i->hello.s)
gcc -S
- 检查语法规范
- 最消耗时间,系统资源最多
-
汇编 (hello.s->hello.o)
gcc -c
- 将汇编指令翻译成机器指令
-
链接 (hello.o->a.out)
- 数据段合并
- 地址回填
GCC的一些方法
参数 | 作用 | 案例 |
---|---|---|
-I | 大写的I,可以指定头文件路径 | gcc -I ./inc hello.c -o hello |
-o | 小写的o,可以将文件直接编译成可以执行文件.exe/.out | gcc hello.c -o hello.out |
-c | 小写的c,只做预处理,编译,汇编,编译成.o的文件的二进制文件 | gcc hello.c -c |
-g | 小写的g,编译的时候添加调试文件 | gcc hello.c -o hello -g |
-On | 大写的O,进行优化需要跟上优化的数值,比如O1,O2,O3,默认是2级,范围是0-3,n的范围越大优化越好 | gcc hello.c -o hello -O3 |
-Wall | Wall,可以提示更多的警告 | gcc hello.c -o hello -Wall |
-D | 在编译的时候可以指定宏执行,动态注册宏 | gcc hello.c -D hello |