0
点赞
收藏
分享

微信扫一扫

【linux浅谈014】gcc的使用

醉倾城1 2022-04-26 阅读 111

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直接生成应用时各个参数说明

指令

 -I [指定头文件寻找地址(先去系统库后去指定库)]
 -D[定义好的宏指令]
 -O[是否进行优化,将无用代码折叠]0123四个级别【注1】【注2】
 -wall[输出警告信息]

注1:传说中gcc共有5个优化级别,-O4优化选项是将你的代码邮件给Jeff重写一下[就算你写O8也只是给你开到O3别痴心妄想了]
注2:但是实际应用中STL编译的时候,我们会开O2优化,开完之后其实速度跟数组模拟的队列差不多快
在算法竞赛中,比赛方一般不会开O2优化,这种情况下STL的栈队列要比数组模拟的栈队列慢一倍左右

举报

相关推荐

0 条评论