GCC详解
来源:互联网 发布:港航物流软件 编辑:程序博客网 时间:2024/06/06 23:19
通过命令gcc -v
可以查看GCC中C编译器gcc的详细信息
常识
1、 gcc的全称: GNU C Compiler ,是GNU的一款编译器
2、 gcc通过后缀名来区别输入文件的类型
常用文件类型
c C语言源代码文件
.C/.cc C++源代码文件
.h 头文件(head也即include)
.i 已经预处理过的C源代码文件 //预处理:完成头文件和宏定义的展开
.ii 已经预处理过的C++源代码文件
.s 汇编语言的源代码
.S 预编译的汇编语言源代码文件
.o 编译后的目标文件object
GCC基本用法
1、 gcc编译程序分为四个阶段产生可执行程序:
Pre-Processing 预处理
gcc -E hello.c -o hello.i
//完成头文件和宏定义的展开,生成hello.i预处理文件
Compiling 编译
gcc -S hello.i -o hello.s
//生成汇编代码,生成hello.s的汇编文件
步骤1:词法分析,主要负责检查关键字、标识符等是否正确。
步骤2:语法分析,主要负责检查程序中语句的语法是否正确。
步骤3:语义分析,主要负责检查程序中语句的逻辑意义是否正确.
Assembling 汇编
gcc -c hello.s -o hello.o
//把汇编程序翻译成 CPU 可以识别的二进制文件,该文件又称为目标文件。
Linking 链接
gcc hello.o -o hello
//把程序中所有的目标文件和所需的库文件都链接在一起,最终生成一个可以直接运行的文件,称为可执行文件。
注:一般生成可执行程序,可以直接 : gcc hello.c -o hello
运行该可执行程序: ./hello
gcc命令生成的可执行文件的有以下三种格式。
1)a.out(Assembler and Link editor output);
2) COFF(Common object file format);
3) ELF(Executable and linkable format);其中,a.out和COFF格式都是比较老的格式,现在Linux平台上可执行文件的主流格式是ELF。
2、使用方法:
gcc +要编译的文件+-o+编译后生成的文件名
注:-o也即是output_filename,是指定编译后生成的文件名,
不是编译选项,如果没指定则默认生成a.out可执行文件
eg: gcc hello.c -o hello
//将hello.c编译链接成可执行文件hello
gcc +[编译选项]+要编译的文件+-o+编译后生成的文件名
常用选项:gcc -c hello.c
//-c只编译,不链接成可执行文件,生成 hello.o 的目标文件
gcc -O hello.c
//-O对程序进行优化,使生成的可执行文件执行效率提高
gcc -O2 hello.c
//-O2比-O更好的优化,是生成的可执行文件效率更高
执行方法: ./hello
//执行当前目录下的可执行文件,./表示当前目录,要执行其他目录的可执行文件,输入该文件的路径即可
测试执行速度:time ./hello
//可以测试优化后的可执行文件的执行速度
- gcc 详解
- gcc详解
- gcc 详解
- gcc详解
- GCC详解
- gcc详解
- GCC详解
- gcc详解
- gcc详解
- gcc详解
- GCC详解
- GCC详解
- gcc 命令行详解(转)
- gcc参数详解
- GCC 命令行详解
- GCC 命令行详解
- GCC 命令行详解
- GCC参数详解
- 洛谷 P1533 可怜的狗狗(离线+权值线段树)
- OPENGL常见函数介绍
- 设计模式从零开始——装饰者模式
- Linux电源管理(一)电源管理系统架构
- spl 教程二 数据结构
- GCC详解
- 单调栈,关于(Bad Hair Day)的模板题
- 旧日本海军建军思路与用兵思路的研究
- Turing Tree(数状数组)
- unity space shooter 学习
- Matrix HDU
- curl命令测试网络请求中DNS解析、响应时间
- [4.3]STL容器List之内部Sort算法原理
- 【图像融合】自适应参考图像的可见光与热红外彩色图像融合算法