1.gcc文件对文件后缀的处理
首先是gcc对于各个文件后缀的识别
.c为后缀的文件,C语言源代码文件;
.a为后缀的文件,是由目标文件构成的库文件;
.C,.cc或.cxx 为后缀的文件,是C++源代码文件;
.h为后缀的文件,是程序所包含的头文件;
.i 为后缀的文件,是已经预处理过的C源代码文件;
.m为后缀的文件,是Objective-C源代码文件;
.o为后缀的文件,是编译后的目标文件;
.s为后缀的文件,是汇编语言源代码文件;
.S为后缀的文件,是经过预编译的汇编语言源代码文件
2.gcc各个参数说明
2.1编译阶段
指令
gcc-S hello.i -o hello.s
编译器:gcc
将.s文件生成汇编语言
2.2汇编阶段
指令
gcc-c hello.s -o hello.o
汇编器:as
生成二进制代码
2.3链接器
指令
gcc hello.o -o [应用](默认a.out)
连接器:od
链接器把多个二进制的目标文件(object file)链接成一个单独的可执行文件。
2.4直接使用gcc
指令
gcc hello.s -o [应用](默认a.out)
gcc自动调用编译器汇编器连接器等
2.5gcc直接生成应用时各个参数说明
指令
-Include[指定头文件寻找地址(先去系统库后去指定库)]
-D[定义好的宏指令]
-O[是否进行优化,将无用代码折叠]0123四个级别【注1】【注2】
-wall[输出警告信息]
-g[加入调试信息]
注1:传说中gcc共有5个优化级别,-O4优化选项是将你的代码邮件给Jeff重写一下[就算你写O8也只是给你开到O3别痴心妄想了]
注2:但是实际应用中STL编译的时候,我们会开O2优化,开完之后其实速度跟数组模拟的队列差不多快
在算法竞赛中,比赛方一般不会开O2优化,这种情况下STL的栈队列要比数组模拟的栈队列慢一倍左右
本文详细介绍了GCC(GNU Compiler Collection)对不同文件后缀的处理,包括C、C++、Objective-C源文件及预处理、汇编、目标文件等。同时,解释了GCC的编译、汇编和链接三个阶段,以及直接使用GCC生成可执行文件的参数,如编译选项(-I, -D, -O)、输出警告(-Wall)和调试信息(-g)。在算法竞赛中,GCC的优化级别选择对STL性能的影响也有所提及。

3290

被折叠的 条评论
为什么被折叠?



