gcc options选项的优化

-c和-o都是gcc编译器的可选参数【options】

-c表示只编译(compile)源文件但不链接,会把.c或.cc的c源程序编译成目标文件,一般是.o文件。【只编译不链接】
-o用于指定输出(out)文件名。不用-o的话,一般会在当前文件夹下生成默认的a.out文件作为可执行程序。【指定输出文件名】

-g 可执行程序包含调试信息【调试】

例如
gcc -c test.c     将生成test.o的目标文件 , 产生.o文件,就是obj文件,不产生执行文件

gcc -o hello test.c     将生成可执行程序hello

gcc -c file.c -o file.o表示把源文件file.c编译成指定文件名file.o的中间目标文件(其实在这里,你把-o file.o省掉,效果是一样的,因为中间文件默认与源文件同名,只是后缀变化)。

options常用编译选项:

优化选项:-O      //大写字母的O

-O0:不做任何优化,这是默认的编译选项。

-O1:  编译器会尝试减小生成代码的尺寸,以及缩短执行时间.它主要对代码的分支,常量以及表达式等进行优化,其中包括线程跳转和延迟退栈。

-O2:除了完成所有-O1级别的优化之外,同时还进行一些额外的调整工作,如处理指令调度等。会尝试更多的寄存器级的优化以及指令级的优化,编译器并不进行循环打开()loop unrolling以及函数内联。与O1比较而言,O2优化增加了编译时间的基础上,提高了生成代码的执行效率。

-O3:除了完成所有-O2级别的优化之外,还包括循环展开和其他一些与处理器特性相关的优化工作,例如使用伪寄存器网络,普通函数的内联,以及针对循环的更多优化。

数字越大优化等级越高,也就是意味着对复杂的程序运行更适配,一般选择-O2(个人选择),一个比较理想的平衡点。

gcc options选项的优化及选择的更多相关文章

  1. gcc 编译 + 选项【转】

    转自:http://blog.csdn.net/princess9/article/details/6567678 一般来说要现有项目中的编译选项,设置新的project的编译选项 编译器 就是将“高 ...

  2. gcc及其选项详解 【转载】

    1.简介: gcc是gnu旗舰产品,目前基本上就是和unix捆绑在一起分发的.这个东西功能强大,但是有多达上千个选项,其用户手册也有将近一万行.虽然其中的多数选项平时很少用到.但是不管装软件还是写程序 ...

  3. gcc及其选项详解

    1.简介: gcc是gnu旗舰产品,目前基本上就是和unix捆绑在一起分发的.这个东西功能强大,但是有多达上千个选项,其用户手册也有将近一万行.虽然其中的多数选项平时很少用到.但是不管装软件还是写程序 ...

  4. Bootstrap-datepicker3官方文档中文翻译---Options/选项(原文链接 http://bootstrap-datepicker.readthedocs.io/en/latest/index.html)

    Options/选项 带“Date”的所有选项都可以处理 Date 对象; 字符串格式化根据 给定的 format 而定; 相对于今天的时间变量, 如 “-1d”, “+6m +1y”等等, 其中有效 ...

  5. Apache Tomcat Server Options 选项说明

    Apache Tomcat Server Options 选项说明 p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Helvetica Neu ...

  6. [译]async/await中使用阻塞式代码导致死锁 百万数据排序:优化的选择排序(堆排序)

    [译]async/await中使用阻塞式代码导致死锁 这篇博文主要是讲解在async/await中使用阻塞式代码导致死锁的问题,以及如何避免出现这种死锁.内容主要是从作者Stephen Cleary的 ...

  7. lr11_Vugen_Genrial Options选项介绍:

    lr11_Vugen_Genrial Options选项介绍:

  8. 记录一次没有收集直方图优化器选择全表扫描导致CPU耗尽

    场景:数据库升级第二天,操作系统CPU使用率接近100%. 查看ash报告: 再看TOP SQL 具体SQL: select count(1) as chipinCount, sum(bets) as ...

  9. GCC的分支预测优化__builtin_expect

    智能指针笔记 GCC的原子操作函数 将流水线引入cpu,可以提高cpu的效率.更简单的说,让cpu可以预先取出下一条指令,可以提供cpu的效率.如下图所示: 取指令 执行指令 输出结果 取指令 执行 ...

随机推荐

  1. Android学习笔记_40_系统结构 目录结构

    1.系统结构: 一.应用程序层 Android平台不仅仅是操作系统,也包含了许多应用程序,诸如SMS短信客户端程序.电话拨号程序.图片浏览器.Web浏览器等应用程序.这些应用程序都是用Java语言编写 ...

  2. HDU 1071 The area(求三个点确定的抛物线的面积,其中一个点是顶点)

    传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1071 The area Time Limit: 2000/1000 MS (Java/Others)  ...

  3. java流汇总以及使用实例

    流一.基本概念 Java中对文件的操作是以流的方式进行的.流是Java内存中的一组有序数据序列.Java将数据从源(文件.内存.键盘.网络) 读入到内存中,形成了流,然后将这些流还可以写到另外的目的地 ...

  4. Oracle书写格式

    字符串和日期要包含在单引号中 字符大小写敏感,日期格式敏感 默认日期格式:dd - MON - RR select * from emp where last_name = 'King' where ...

  5. js面向对象轮播图写法

    ;;}         ,,,;}         ];     ].].;     ){             ;             ;         }) } Banner.protot ...

  6. ETO的公开赛T1《矿脉开采》题解(另类版)

    这道题别看是签到题,写起来一点不简单 出题人的正解是双向搜索 我们把物品分成两半 每一半分别跑搜索 答案存下来,用个双指针合并即可 然后我构造了两组数据卡掉了他,不得不缩小数据范围 但我这里为什么要致 ...

  7. C++定义一个简单的Computer类

    /*定义一个简单的Computer类 有数据成员芯片(cpu).内存(ram).光驱(cdrom)等等, 有两个公有成员函数run.stop.cpu为CPU类的一个对象, ram为RAM类的一个对象, ...

  8. 背景qwq

  9. sublime text 3 配置terminal 启动npm

    前期工作.安装node.js 配置全家变量 1:ctrl + shift + p 打开 输入intall package 回车 2:安装node.js 插件 3:再安装terminal 4:Prefe ...

  10. Git----使用WebHook实现代码自动部署

    起因: 经常本地push到gitee等线上代码仓库,然后登陆服务器在进行pull,很麻烦,想偷懒怎么办?使用git的webhook实现! 1.实现原理 1.1本地提交推送 1.2线上仓库监听push动 ...