GCC编译选项补充

2023-11-03

一、 出错检查和警告提示选项

-pedantic-error  允许发出ANSIC标准所列的全部错误信息

-w                         关闭所有警告

-Wall      允许发出GCC提供的所有有用的报警信息

-Werror               把所有的告警信息转化为错误信息,并在告警发生时终止编译过程


二、 代码优化选项

代码优化是指编译器通过分析源代码找出其中尚未达到最优的部分,然后对其重新进行组合,进而改善代码的执行性能。GCC通过提供编译选项-On来控制优化代码的生成,其中n是一个代表优化级别的整数。

对于大型程序来说,使用代码优化选项可以大幅度提高代码的运行速度。

-O选项:编译时使用选项-O可以告诉GCC同时减小代码的长度和执行时间,其效果等价于-O1

-O2选项:选项-O2告诉GCC除了完成所有-O1级别的优化之外,同时还要进行一些额外的调整工作,如处理器指令调度

不同的优化级别对应不同的优化处理工作。如使用优化选项“-O”主要进行线程跳转(Thread Jump)和延迟退栈(Deferred Stack Pops)两种优化。使用优化选项“-O2”除了完成所有“-O1”级别的优化之外,同时还要进行一些额外的调整工作,如处理器指令调度等。选项“-O3”则还包括循环展开和其他一些与处理器特性相关的优化工作。

虽然优化选项可以加速代码的运行速度,但对于调试而言将是一个很大的挑战。因为代码在经过优化之后,原先在源程序中声明和使用的变量很可能不再使用,控制流也可能会突然跳转到意外的地方,循环语句也有可能因为循环展开而变得到处都有,所有这些对调试来讲都将是一场噩梦。所以建议在调试的时候最好不使用任何优化选项,只有当程序在最终发行的时候才考虑对其进行优化。

三、 调试分析选项

  -g/-g1/g2/g3选项:生成调试信息,GNU调试器可以利用该信息。GCC编译器使用该选项进行编译时,将调试信息加入到目标文件中,这样gdb调试器就可以根据这些调试信息来跟中程序的执行状态。

  -pg选项:编译完成后,额外产生一个性能分析所需信息。

  注意:使用调试选项都会使最终生成的二进制文件的大小急剧增加,同时增加程序在执行时的开销,因此调试选项统常推荐仅仅在程序开发和调试阶段中使用。


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

GCC编译选项补充 的相关文章

  • 【附源码】Java计算机毕业设计社区私家车位共享收费系统(程序+LW+部署)

    项目运行 环境配置 Jdk1 8 Tomcat7 0 Mysql HBuilderX Webstorm也行 Eclispe IntelliJ IDEA Eclispe MyEclispe Sts都支持 项目技术 java mybatis M
  • Air780E

    目录 基础资料 探讨重点 实现功能 硬件准备 软件版本 软件使用 串口工具 主要步骤 1 SIM卡状态检查及激活PDP 2 关于SSL配置 3 通过TCP连接到MQTT服务器 4 订阅或者发布消息 4 1 订阅主题 AT MSUB 4 2
  • VUE for循环 默认选中第一条数据

    for循环渲染列表默认选中第一条数据 点击其他选项切换数据 div div class Subtitle style padding 5px 40px 项目清单 div div class project manifest div clas
  • 【MySQL进阶】SQL性能分析

    一 SQL性能分析 1 SQL执行频率 MySQL 客户端连接成功后 通过 show session global status 命令可以提供服务器状态信 息 通过如下指令 可以查看当前数据库的 INSERT UPDATE DELETE S
  • Linux安装MySQL 5.7

    一 下载MySQL 官网地址 下载 mysql 5 7 37 linux glibc2 12 x86 64 tar gz 二 安装MySQL 1 1 连接Shell cd usr local 切换到此目录下 1 2 把MySQL包传到she
  • FPGA学习笔记4 --modesim软件仿真

    modesim软件仿真 一 手动仿真 二 联合仿真 一 手动仿真 1 添加路径 2 新建工程 3 添加源文件 4 编译文件 5 启动仿真 6 信号添加到波形里 7 运行 二 联合仿真 1 首先电脑要安装ModelSim软件 注意安装路径不要
  • Neo4j 快速入门

    Neo4j 快速入门 neo4j 官方文档 https neo4j com docs neo4j 中文社区 http neo4j com cn neo4j 开发者页面 https neo4j com developer Neo4j安装 a
  • 计算机键盘正确指法,键盘指法,详细教您盲打及快速打字指法练习的步骤

    有些人在用电脑打字的时候 会打的特别快 最快的时候能够一分钟打上八九十个字 而这样的打字速度也是靠平时的练就打字功力得来的 那么键盘指法打字如何才能将字打的准备又快呢 别着急 小编现在就来给你们普及一下这方面的知识 学会正确的键盘指法打字
  • 1.2 编程语言选择

    1 2 编程语言和城市选择 商业网站开发课 编程语言选择 后端开发语言 特点 排名网站 https hellogithub com report tiobe 薪资 参考2022年智联招聘 深圳初级和中级薪资 通用技能 操作系统 Linux
  • 在网络安全解决方案中使用数据挖掘技术

    网络安全 英语 network security 包含网络设备安全 网络信息安全 网络软件安全 黑客通过基于网络的入侵来达到窃取敏感信息的目的 也有人以基于网络的攻击见长 被人收买通过网络来攻击商业竞争对手企业 造成网络企业无法正常营运 网
  • 【ChatGPT实战案例】Excel代码太多记不住怎么办?ChatGPT来帮你高效解决问题

    目录 适合人群 使用工具 制作步骤 示例1 Excel数据分列 示例2 Excel数据提取 适合人群 会Excel基本操作 但是不懂Excel公式编写的人 使用工具 内容生产工具 如ChatGPT 讯飞星火认知模型 文心一言等 EXCEL文
  • LeetCode1748. 唯一元素的和(python)

    题目 给你一个整数数组 nums 数组中唯一元素是那些只出现 恰好一次 的元素 请你返回 nums 中唯一元素的 和 示例 1 输入 nums 1 2 3 2 输出 4 解释 唯一元素为 1 3 和为 4 示例 2 输入 nums 1 1
  • VCF变异文件读取和详细

    下载了千人基因组variants数据 是 vcf gz和 vcf gz tbi文件格式 需要在linux上打开 此时我还是一个生信小菜鸡 记录一下vcf文件读取和详细解释 在服务器先解压再打开 gunzip 文件 vcf gz cat 文件
  • 弹性盒模型学习

    一 弹性盒布局 1 弹性盒布局的容器指的是采用了弹性布局的DOM元素 而弹性布局的条目指的是容器中包含的子DOM元素 最外围的边框表示的是容器 而编号1和2的边框表示的是容器中的条目 弹性盒布局中有两个相互垂直的坐标轴 一个是主轴 另一个称
  • 【UE虚幻引擎】UE源码版编译、Andorid配置、打包

    首先是要下载源码版的UE 我这里下载的是5 2 1 首先要安装Git 在你准备放代码的文件夹下右键点击Git Bash Here 然后可以直接git clone https github com EpicGames UnrealEngine
  • 51单片机播放音乐(一):蜂鸣器

    51单片机播放音乐 一 蜂鸣器 原理 蜂鸣器 乐谱转成循环次数 单片机代码 仿真电路图 本文完整源码 原理 蜂鸣器 蜂鸣器分为有 震动 源的和无源的 有源的无法控制频率 所以用无源的才能播放音乐 无源蜂鸣器需要自己控制输入变化的信号才能发声
  • Rstudio MarkDown使用教程

    认识MarkDown MarkDown是一种轻量级的 标记语言 它的优点很多 目前也被越来越多的写作爱好者 撰稿者广泛使用 Markdown 的语法十分简单 常用的标记符号也不超过十个 对于大学里掌握了多门语言的我们来说 这种不需要思维 仅
  • R语言—如何下载和使用包

    R语言中有非常多的包 每个包都具有不同的功能 因此 在正式的R语言学习之前 需要学会如何下载和安装R的包 以此进行下一步学习 install packages 安装 1 打开RStudio软件 在RStudio中输入代码install pa
  • 实现增删查改

    核心代码 增 myModel Table1 Add data 删 myModel Table1 Remove data 查 var data myModel Table1 ToList 改 myModel Entry data State
  • js 随机获取数组几个内容

    function getRandomArrayElements arr count var shuffled arr slice 0 i arr length min i count temp index while i gt min in

随机推荐

  • HTML <textarea> 标签

    实例
  • C++设计模式——观察者模式

    观察者模式 Observer 观察者模式是目前应用最广 影响范围最大的模式之一 因为 Observer 的一个实例Model View Control MVC 结构在系统开发架构设计中有着很重要的地位和意义 MVC实现了业务逻辑和表示层的解
  • 羞愧的“码龄3年”开篇之作

    打开账号发现码龄已经三年了 已经忘记了是什么情况之下注册了账号 怎能让账号下空空如也 先来个开篇之作留个痕迹 源于前两天学习了一下脚本语言 今天做一个内容回顾记录一下 以下是学习过程中有些不懂得地方查了各个博客后的整体总结 只针对于个人的只
  • Hadoop集群配置——1

    参考 Python Spark 2 0 Hadoop机器学习与大数据实战 林大贵 著 清华大学出版社 一 Hadoop集群 Hadoop集群需要4台服务器才可以建立 可以进行并行处理 所以在虚拟机上创建了master data1 data3
  • Android Studio Electric Eel提示Gradle插件报错问题的解决方法

    新建一个工程 执行Sync gradle files报错 提示Gradle plugin找不到或者运行库版本不兼容 会有不同的错误提示 摘录部分错误提示如下 解决方法 需要使用JDK 11编译工程 设置步骤 File gt Project
  • C++ 入门算法,你必须懂的“顺序表”

    顺序表简介 顺序表是简单的一种线性结构 他们可以说是连续存储元素的 也可以称之为数组 顺序表可以快速定位到第几个元素的位置 中间不允许有空值 插入 删除时需要移动大量的元素 顺序表的三个要素 用elems记录存储位置的基地址 分配一段连续的
  • 数字信号处理综合实验——Matlab实现DTMF信号的产生与提取

    数字信号处理综合实验 一 实验内容及要求 实验内容 综合运用课程所学相关知识 根据实际信号的频谱特性 确定数字滤波器设计技术指标 设计相应的数字滤波器 实现DTMF信号的提取 设计要求 1 通过查阅资料 自学电话中DTMF信号的产生与检测方
  • python处理wrf气象数据_气象数据处理:NetCDF文件处理

    NetCDF文件是自描述的二进制数据格式 所谓自描述就是自带属性信息 这和一般的雷达基数据格式不同 一般的雷达数据也是二进制的 但不是自描述的 而是需要额外的数据格式文档来说明数据格式 而NetCDF文件中包含了描述变量和维度的元数据信息
  • Edge被2345浏览器劫持 解决方法

    Edge 被 hao123 劫持解决方法 edge被hao123锁定改不了 小子宝丁的博客 CSDN博客
  • 无法加载文件 C:\Users\xxx\Documents\WindowsPowerShell\profile.ps1

    无法加载文件 C Users xxx Documents WindowsPowerShell profile ps1 本次尝试解决方法 使用管理远打开 windows powershell 运行以下内容 Set ExecutionPolic
  • mysql time类型解析_mysql时间数据类型解析

    1 MySQL的五种日期和时间类型 MySQl中有多种表示日期和时间的数据类型 其中YEAR表示年份 DATE表示日期 TIME表示时间 DATETIME和TIMESTAMP表示日期和实践 它们的对比如下 TEAR 字节数为1 取值范围为
  • SpringMVC(十三) RequestMapping 使用servlet原生API作为参数

    SpringMVC支持以下Servlet方法 HttpServletRequest HttpServletResponse HttpSession Writer Reader Locale InputStream OutputStream
  • 内核(kernel)的链接脚本

    1 链接脚本的产生 kernel的链接脚本和uboot的不同 uboot的链接脚本是源文件的一部分 而kernel的链接脚本在源文件中是找不到的 要经过编译才会产生 链接脚本的名字是vmlinux lds 由汇编文件vmlinux lds
  • 【多模态】15、MobileSAM

    文章目录 一 背景 二 方法 2 1 耦合蒸馏 2 2 从半蒸馏到解耦蒸馏 三 效果 论文 FASTER SEGMENT ANYTHING TOWARDS LIGHTWEIGHT SAM FOR MOBILE APPLICATIONS 代码
  • 实现strcpy功能

    实现strcpy的功能 运行结果
  • QT编译FreeType和Little CMS

    一 FreeType FreeType是个开源字体引擎 可以移植到arm中 也可以在桌面软件中使用 下载FreeType 这里使用FreeType 2 10 4版本 使用QT Creator新建工程 工程名为FreeType 解压后 只取出
  • yarn创建vite项目——遇见的错误及解决方法

    今天尝试做一个vue3 vite的组件库项目 没想到第一步就开始出现问题 改了整整一天 那么我们开始 首先 目录中间包含空格 导致报错 会出现这种错误时因为 c program files 这里 中间有一个空格 很显然yarn帮并不能通过这
  • mac安装mysql workbench,Mac OS X 上的“MySQLWorkbench quit unexpectly.”问题

    今天 在我的Mac OS X 10 8 4 系统上使用MySQLWorkbench 6 0 7 在启动之时 就遇到问题不能启动 提示对话框为 MySQLWorkbench quit unexpectly 然后 有 ignore report
  • 软件测试之检查产品说明书

    场景 学习 软件测试 第4章节 检查产品说明书 关于黑盒测试和白盒测试 黑盒测试只需要知道软件要做什么 而无法看到盒子里的软件是怎么运行的 只要进行一些输入 然后输出结果 目前我们做的基本上是这种测试 我们知道输入和预计输出 只要把按操作输
  • GCC编译选项补充

    一 出错检查和警告提示选项 pedantic error 允许发出ANSIC标准所列的全部错误信息 w 关闭所有警告 Wall 允许发出GCC提供的所有有用的报警信息 Werror 把所有的告警信息转化为错误信息 并在告警发生时终止编译过程