在linux中使用gcc编译程序时,若使用-g参数在程序中加入调试信息,则生成可执行文件的大小接近不加-g参数时的两倍。

1.-O,-O1:

这两个命令的效果是一样的,目的都是在不影响编译速度的前提下,尽量采用一些优化算法降低代码大小和可执行代码的运行速度。并开启如下的优化选项:

-fauto-inc-dec

-fbranch-count-reg

-fcombine-stack-adjustments

-fcompare-elim

-fcprop-registers

-fdce

-fdefer-pop

-fdelayed-branch

-fdse

-fforward-propagate

-fguess-branch-probability

-fif-conversion2

-fif-conversion

-finline-functions-called-once

-fipa-pure-const

-fipa-profile

-fipa-reference

-fmerge-constants

-fmove-loop-invariants

-freorder-blocks

-fshrink-wrap

-fshrink-wrap-separate

-fsplit-wide-types

-fssa-backprop

-fssa-phiopt

-fstore-merging

-ftree-bit-ccp

-ftree-ccp

-ftree-ch

-ftree-coalesce-vars

-ftree-copy-prop

-ftree-dce

-ftree-dominator-opts

-ftree-dse

-ftree-forwprop

-ftree-fre

-ftree-phiprop

-ftree-sink

-ftree-slsr

-ftree-sra

-ftree-pta

-ftree-ter

-funit-at-a-time

2. -O2

该优化选项会牺牲部分编译速度,除了执行-O1所执行的所有优化之外,还会采用几乎所有的目标配置支持的优化算法,用以提高目标代码的运行速度。

-fthread-jumps

-falign-functions  -falign-jumps

-falign-loops  -falign-labels

-fcaller-saves

-fcrossjumping

-fcse-follow-jumps  -fcse-skip-blocks

-fdelete-null-pointer-checks

-fdevirtualize -fdevirtualize-speculatively

-fexpensive-optimizations

-fgcse  -fgcse-lm

-fhoist-adjacent-loads

-finline-small-functions

-findirect-inlining

-fipa-cp

-fipa-cp-alignment

-fipa-bit-cp

-fipa-sra

-fipa-icf

-fisolate-erroneous-paths-dereference

-flra-remat

-foptimize-sibling-calls

-foptimize-strlen

-fpartial-inlining

-fpeephole2

-freorder-blocks-algorithm=stc

-freorder-blocks-and-partition -freorder-functions

-frerun-cse-after-loop

-fsched-interblock  -fsched-spec

-fschedule-insns  -fschedule-insns2

-fstrict-aliasing -fstrict-overflow

-ftree-builtin-call-dce

-ftree-switch-conversion -ftree-tail-merge

-fcode-hoisting

-ftree-pre

-ftree-vrp

-fipa-ra

3. -O3

该选项除了执行-O2所有的优化选项之外,一般都是采取很多向量化算法,提高代码的并行执行程度,利用现代CPU中的流水线,Cache等。这个选项会提高执行代码的大小,当然会降低目标代码的执行时间。

-finline-functions      // 采用一些启发式算法对函数进行内联

-funswitch-loops        // 执行循环unswitch变换

-fpredictive-commoning  //

-fgcse-after-reload     //执行全局的共同子表达式消除

-ftree-loop-vectorize   //

-ftree-loop-distribute-patterns

-fsplit-paths

-ftree-slp-vectorize

-fvect-cost-model

-ftree-partial-pre

-fpeel-loops

-fipa-cp-clone options

4. -Os

这个优化标识和-O3有异曲同工之妙,当然两者的目标不一样,-O3的目标是宁愿增加目标代码的大小,也要拼命的提高运行速度,但是这个选项是在-O2的基础之上,尽量的降低目标代码的大小,这对于存储容量很小的设备来说非常重要。为了降低目标代码大小,会禁用下列优化选项,一般就是压缩内存中的对齐空白(alignment padding)

-falign-functions

-falign-jumps

-falign-loops

-falign-labels

-freorder-blocks

-freorder-blocks-algorithm=stc

-freorder-blocks-and-partition

-fprefetch-loop-arrays

linux编译gcc多久时间,Linux gcc编译参数说明相关推荐

  1. linux 禁止文件修改时间,linux 修改文件的时间属性

    二.修改文件时间 创建文件我们可以通过touch来创建.同样,我们也可以使用touch来修改文件时间.touch的相关参数如下: -a : 仅修改access time. -c : 仅修改时间,而不建 ...

  2. linux系统怎么看时间,linux系统如何查看当前时间

    Linux ls命令详解Linux中ls命令用于显示指定工作目录下之内容,其内容就是指定的工作目录所含之文件及子目录,该命令的用法为"ls [参数] [目录名]",其常用参数有&a ...

  3. linux运维培训时间,linux运维培训班跟自学相比那个好?

    Linux运维人才在当时的it行业比较擅长,很多朋友都打算自学Linux运维,大多想在自学前从多方面寻找关于Linux运维自学的好建议.不少人都在问linux培训好还是自学好,自学跟培训班相比有什么不 ...

  4. linux touch更新文件时间,Linux文件时间的查看和修改touch

    1. Linux文件的时间 Linux下文件时间主要有下面三种: 1.1 modification time(mtime) 文件修改时间,即文件内容的修改时,更新这个时间,不包括文件权限和属性的修改. ...

  5. linux循环显示系统时间,Linux shell时间处理大全,值得收藏

    本文汇总了Linux shell中各种时间处理方法,包括时间显示.时间转换.时间设置等等,内含大量示例及输出, 这里记录下来作为备忘,持续更新,禁止转载.内容比较多,可以直接CTRL+F查找. 1. ...

  6. linux双系统切换时间,linux与windows双系统下时间不一致的解决办法

    装完win7和Linux双系统后,进入Linux后再进入Windows,你会惊奇的发现时间不对了,差了有8个小时. 导致这样的原因是Winows和 Linux 对硬件时间的处理方法不同,Windows ...

  7. linux修改硬件系统时间,Linux修改日期、时间,系统与硬件时间

    Linux的时间分为两种,硬件时间和系统时间两种: 一.查看与修改系统时间 查看系统时间:date # date Fri Nov 26 15:20:18 CST 1999 用指定的格式显示系统时间:  ...

  8. linux系统无法设置时间,linux设置系统时间

    设置系统时间 -         date命令:显示系统的时间,可以在直接输入"date"命令来查看系统的时间 -           date+%y/%m/%d -        ...

  9. linux 4.6发布时间,Linux Kernel 4.6的第4个维护版本发布

    Linux Kernel 4.6的第4个维护版本发布 2016年07月12日 16:37作者:cnBeta编辑:李佳辉 分享 今天,极富名望的Linux Kernel开发者葛雷格·克罗哈曼(Greg ...

最新文章

  1. ResNeSt 登顶COCO数据集(目标检测,实例分割,全景分割)
  2. 【连载】优秀程序员的45个习惯之37——提供有用的错误信息
  3. 小米Redmi 5G旗舰 K30 Pro,最大亮点:怼华为荣耀
  4. 【Linux使用技巧】linux 死机了怎么办
  5. 【数理知识】《数值分析》李庆扬老师-第7章-非线性方程与方程组的数值解法
  6. Mocha and Red and Blue 模拟字符串
  7. 225. Implement Stack using Queues
  8. Microsoft Enterprise Library 5.0 系列(四) Logging Application Block
  9. IDEA for win 常用快捷键
  10. 中信证券:维持贝壳“买入”的投资评级
  11. 小米组织架构调整:雷军兼任中国区总裁 组建大家电部门
  12. python中dumps和dump区别_python json.dumps() json.dump()的区别
  13. net use 使用
  14. 【渝粤教育】国家开放大学2019年春季 1344金融风险管理 参考试题
  15. 九度 1188 约瑟夫环问题
  16. 用 SQL 脚本读取Excel 中的sheet数量及名称
  17. WindowsXP、Windows2003本地密码清除方法
  18. 内网穿透小知识|什么是端口映射?端口映射使用操作指南
  19. 智能门锁电路图_智能门锁工作原理分析及智能门锁基本工作流程技术原理介绍...
  20. 联通bss转cbss_携号转网山西联通经业务系统受理的首张携入号码开卡成功

热门文章

  1. DNF安装MySQL_安装MYSQL 8.0
  2. PTA--递归:7-1 斐波那契数列(I)
  3. IKUN必学Python
  4. 在Python字符串里嵌入双引号或者单引号
  5. 本地计算机无法启动wireless,win7连接无线提示“无法启动wireless pan dhcp server服务”如何解决...
  6. 反转单链表(三种方法)(三指针法)(头插法)(递归)经典面试题
  7. python和java哪个更适合大数据-要做大数据工程师,Java和Python哪个更有优势?
  8. IDEA如何配置 Maven 及 Maven 安装过程(详细版)
  9. 可道云:像Windows操作一样的企业网盘
  10. LeetCode 1000. 合并石头的最低成本(经典区间DP)