gcc编译器

gcc编译器是一个交叉平台编译器,可以为x86,ARM等不同体系结构的硬件平台编译程序,并且可以编译C,C++,Pascal,java等十数种高级语言。gcc编译程序时其过程可以被分为四个部分:预处理,编译,链接

预处理,gcc -E test.c -o text.i命令语句生成.i文件,-E参数是gcc只进行预编译。

编译,gcc -S text.i -o text.s命令语句生成.s文件,-S参数使gcc只进行编译。

汇编,gcc -c text,s -o text.o命令语句生成.o文件,-c参数 使gcc只进行汇编。

链接,gcc text.o -o text命令语句会生成一个text可执行文件。

除此之外,gcc还拥有多个选项,

-W      屏蔽所有的警告信息

-wall   显示所有类型的警告信息

-g      产生调试信息

-static 使用静态链接 

-I      指定头文件第三方搜索路径

-D      定义外部宏

其中优化选项有-o1,-o2,-o3,-o0,分别是不同级别优化,其具体为,

-O1

优化.对于大函数,优化编译占用稍微多的时间和相当大的内存.

不使用`-O'选项时,编译器的目标是减少编译的开销,使编译结果能够调试.语句是独立的:如果在 两条语句之间用断点中止程序,你可以对任何变量重新赋值,或者在函数体内把程序计数器指到其他语句,以及从源程序中 精确地获取你期待的结果.

不使用`-O'选项时,只有声明了register的变量才分配使用寄存器.编译结果比不用 `-O'选项的PCC要略逊一筹.

使用了`-O'选项,编译器会试图减少目标码的大小和执行时间.

如果指定了`-O'选项, `-fthread-jumps'和`-fdefer-pop'选项将被 打开.在有delay slot的机器上, `-fdelayed-branch'选项将被打开.在即使没有帧指针 (frame pointer)也支持调试的机器上, `-fomit-frame-pointer'选项将被打开.某些机器上 还可能会打开其他选项.

-O2

多优化一些.除了涉及空间和速度交换的优化选项,执行几乎所有的优化工作.例如不进行循环展开(loop unrolling)和函数内嵌(inlining).和-O选项比较,这个选项既增加了编译时间,也提高了生成代码的 运行效果.

-O3

优化的更多.除了打开-O2所做的一切,它还打开了-finline-functions选项.

-O0

不优化.



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值