gcc编译器
gcc编译器-完整版
如果有帮助的话,可以给我GitHub点和Star吗🎉
GCC简介
GNU
是 GNU's Not Unix!
的递归缩写。
GNU
是一个技术组织。GNU计划,又称革奴计划,目标是创建一套完全自由的软件操作系统。
GCC
是由GNU开发的能够编译多种编程语言的编译器。
- 最初,GCC是指
GNU C Compiler
(GNU C语言编译器),只能处理C语言。 - 随着时间发展,GCC 项目扩展了功能,开始支持多种编程语言(C++, Objective-C, Fortran, Ada, Go, D 等)。因此,GCC 现在的官方含义是 “
GNU Compiler Collection
” (GNU 编译器套件)。它是一个包含多种语言编译器的集合。
gcc常用参数
选项 | 说明 |
---|---|
-v/–version | 查看gcc的版本 |
-I(大写的i) | 编译的时候指定头文件路径,不然头文件找不到 |
-c | 将汇编文件转换成二进制文件,得到.o文件 |
-g | gdb调试的时候需要加 |
-D | 编译的时候指定一个宏(调试代码的时候需要使用例如printf函数, 但是这种函数太多了对程序性能有影响,因此如果没有宏,则#ifdefine的内容不起作用) |
-wall | 添加警告信息 |
-On | -O是优化代码,n是优化级别:1,2,3 |
gcc工作流程
gcc工作流程,即编译汇编的四个阶段:预处理(预编译)、编译、汇编和链接。
- 预处理(-E)
gcc -E test.c -o test.i
执行预处理,由源代码test.c 生成 test.i 源文件/中间文件
。
2. 编译(-S)
gcc -S test.i -o test.s
由 test.i临时文件 生成 test.s 汇编文件
。
gcc -S test.c
执行预处理和编译,输出 test.s 汇编文件。
3. 汇编(-c)
gcc -c test.s -o test.o
由 test.s 汇编文件 生成 test.o 二进制目标文件
。
gcc -c test.i -o test.o
执行 编译、汇编。
gcc -c test.c
执行 预处理、编译、汇编。
4. 链接
gcc test.o -o test
将目标文件(.o)链接到一起生成可执行程序(可执行文件)
,静态库文件(.a)直接嵌入可执行程序,对于动态库(.so)可执行程序中记录依赖关系。