linux编译gcc多久时间,Linux gcc编译参数说明
在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编译参数说明相关推荐
- linux 禁止文件修改时间,linux 修改文件的时间属性
二.修改文件时间 创建文件我们可以通过touch来创建.同样,我们也可以使用touch来修改文件时间.touch的相关参数如下: -a : 仅修改access time. -c : 仅修改时间,而不建 ...
- linux系统怎么看时间,linux系统如何查看当前时间
Linux ls命令详解Linux中ls命令用于显示指定工作目录下之内容,其内容就是指定的工作目录所含之文件及子目录,该命令的用法为"ls [参数] [目录名]",其常用参数有&a ...
- linux运维培训时间,linux运维培训班跟自学相比那个好?
Linux运维人才在当时的it行业比较擅长,很多朋友都打算自学Linux运维,大多想在自学前从多方面寻找关于Linux运维自学的好建议.不少人都在问linux培训好还是自学好,自学跟培训班相比有什么不 ...
- linux touch更新文件时间,Linux文件时间的查看和修改touch
1. Linux文件的时间 Linux下文件时间主要有下面三种: 1.1 modification time(mtime) 文件修改时间,即文件内容的修改时,更新这个时间,不包括文件权限和属性的修改. ...
- linux循环显示系统时间,Linux shell时间处理大全,值得收藏
本文汇总了Linux shell中各种时间处理方法,包括时间显示.时间转换.时间设置等等,内含大量示例及输出, 这里记录下来作为备忘,持续更新,禁止转载.内容比较多,可以直接CTRL+F查找. 1. ...
- linux双系统切换时间,linux与windows双系统下时间不一致的解决办法
装完win7和Linux双系统后,进入Linux后再进入Windows,你会惊奇的发现时间不对了,差了有8个小时. 导致这样的原因是Winows和 Linux 对硬件时间的处理方法不同,Windows ...
- linux修改硬件系统时间,Linux修改日期、时间,系统与硬件时间
Linux的时间分为两种,硬件时间和系统时间两种: 一.查看与修改系统时间 查看系统时间:date # date Fri Nov 26 15:20:18 CST 1999 用指定的格式显示系统时间: ...
- linux系统无法设置时间,linux设置系统时间
设置系统时间 - date命令:显示系统的时间,可以在直接输入"date"命令来查看系统的时间 - date+%y/%m/%d - ...
- linux 4.6发布时间,Linux Kernel 4.6的第4个维护版本发布
Linux Kernel 4.6的第4个维护版本发布 2016年07月12日 16:37作者:cnBeta编辑:李佳辉 分享 今天,极富名望的Linux Kernel开发者葛雷格·克罗哈曼(Greg ...
最新文章
- ResNeSt 登顶COCO数据集(目标检测,实例分割,全景分割)
- 【连载】优秀程序员的45个习惯之37——提供有用的错误信息
- 小米Redmi 5G旗舰 K30 Pro,最大亮点:怼华为荣耀
- 【Linux使用技巧】linux 死机了怎么办
- 【数理知识】《数值分析》李庆扬老师-第7章-非线性方程与方程组的数值解法
- Mocha and Red and Blue 模拟字符串
- 225. Implement Stack using Queues
- Microsoft Enterprise Library 5.0 系列(四) Logging Application Block
- IDEA for win 常用快捷键
- 中信证券:维持贝壳“买入”的投资评级
- 小米组织架构调整:雷军兼任中国区总裁 组建大家电部门
- python中dumps和dump区别_python json.dumps() json.dump()的区别
- net use 使用
- 【渝粤教育】国家开放大学2019年春季 1344金融风险管理 参考试题
- 九度 1188 约瑟夫环问题
- 用 SQL 脚本读取Excel 中的sheet数量及名称
- WindowsXP、Windows2003本地密码清除方法
- 内网穿透小知识|什么是端口映射?端口映射使用操作指南
- 智能门锁电路图_智能门锁工作原理分析及智能门锁基本工作流程技术原理介绍...
- 联通bss转cbss_携号转网山西联通经业务系统受理的首张携入号码开卡成功
热门文章
- DNF安装MySQL_安装MYSQL 8.0
- PTA--递归:7-1 斐波那契数列(I)
- IKUN必学Python
- 在Python字符串里嵌入双引号或者单引号
- 本地计算机无法启动wireless,win7连接无线提示“无法启动wireless pan dhcp server服务”如何解决...
- 反转单链表(三种方法)(三指针法)(头插法)(递归)经典面试题
- python和java哪个更适合大数据-要做大数据工程师,Java和Python哪个更有优势?
- IDEA如何配置 Maven 及 Maven 安装过程(详细版)
- 可道云:像Windows操作一样的企业网盘
- LeetCode 1000. 合并石头的最低成本(经典区间DP)