keil5同一个程序编译出来的bin文件大小不一样

2023-11-05

起因

在用一个别人的程序时,出现了设备死机的现象。但是同样的程序别人使用没有问题。经过排查发现生成的bin文件大小和别人的不一样。开始以为是keil和keil编译器的版本不同的问题,但是换成相同的版本还是不行,最后发现是keil配置的优化等级不一样

这个东西会影响生成的bin文件大小和调试,开始我的选成了【default】,选成0就正常的。虽然不太理解为什么优化会影响功能但是确实是这个设置的原因。

各个等级的作用

优化等级0
Minimum optimization. Turns off most optimizations.It gives the best possible debug view and the lowest level of optimization.

近乎不优化,用于调试代码。出现代码行不能设置断点可如此设置试试。

特点:最少的优化,可以最大程度上配合产生代码调试信息,可以在任何代码行打断点,特别是死代码处。

优化等级1
Restrictedoptimization. Removes unused inline functions and unused static functions.Turns off optimizations that seriously degrade the debug view. Ifused with --debug, this option gives a satisfactorydebug view with good code density.

部分优化。移除未调用的内联函数和静态函数,关闭debug窗口优化,此状态也能用于调试

特点:有限的优化,去除无用的inline和无用的static函数、死代码消除等,在影响到调试信息的地方均不进行优化。在适当的代码体积和充分的调试之间平衡,代码编写阶段最常用的优化等级。

优化等级2

Highoptimization. If used with --debug, the debug viewmight be less satisfactory because the mapping of object code tosource code is not always clear.This is the default optimization level.

默认优化等级。如果处于debug状态,部分代码行将不能被调试,具体做了什么优化好像没说

特点:高度优化,调试信息不友好,有可能会修改代码和函数调用执行流程,自动对函数进行内联等。

 

优化等级3
Maximumoptimization. -O3 performs the same optimizationsas -O2 however the balance between space and timeoptimizations in the generated code is more heavily weighted towardsspace or time compared with -O2.

等级3和等级2除了执行相同的优化,还有在空间和时间之间的平衡优化在生成的代码中比等级2更重的空间或时间。

特点:最大程度优化,产生极少量的调试信息。会进行更多代码优化,例如循环展开,更激进的函数内联等。

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

keil5同一个程序编译出来的bin文件大小不一样 的相关文章

随机推荐

  • PCL 泊松曲面重建法(多线程加速版)

    目录 一 算法原理 1 算法概述 2 主要函数 二 代码实现 三 结果展示 一 算法原理 1 算法概述 PCL中常用的泊松曲面重建法由于运算复杂度高 算法效率低 在实际应用中受到较大的限制 为了改变这一现状 PCL1 13 0版本中对该算法
  • docker的安装(yum/rpm/二进制/shell/)

    1 yum安装 官方推荐 参考以下文档安装即可 https docs docker com engine install centos https mirrors tuna tsinghua edu cn help docker ce 2
  • PyQty5—第三课:按钮与函数绑定(2)(附完整代码)

    在上一节课中 我们已经学会了将按钮与函数进行绑定 从而自己可以对函数进行扩展 那么今天我们将会学习另一个方法将按钮与函数进行绑定 上一节课的复习链接 点我 gt PyQty5 第二课 首相我们把上一节课的代码中的绑定函数以及对象注释掉 代码
  • win10关闭自动屏保

    https blog csdn net u010560236 article details 108462946 1 桌面空白处点击鼠标右键 显示设置 电源和睡眠 如下都设置了 从不 然而不起作用 还是会自动锁屏 2 桌面空白处点击鼠标右键
  • java调用dll

    本文转自 http www blog edu cn user4 jjj250 archives 2007 1722308 shtml Jawin Java Win32 是一个免费的 开放源代码的体系结构 用于 Java 组件和通过 Wind
  • eclipse中java代码在控制台输出的中文内容是乱码怎么解决

    eclipse中创建了一个maven工程 用System out在控制台输出内容 但中文内容显示乱码 解决方法 右键单击工程 选择Run As gt Run Configurations 点击Common这个tab页 Encoding选择U
  • 谷歌浏览器如何启用java小脚本_各种浏览器开启JavaScript脚本方法

    随着网站设计技术的发展 为了用户友好体验 大部分网站使用了JavaScript脚本设计 如果您的浏览器禁用或关闭的JavaScript支持 那么可能造成网站体验差或网站部分功能无法使用 下面提供10种浏览器如何开启JavaScript的方法
  • python整数位数能无限大么_在计算机中,整数不能无限大。为什么呢?

    非常感谢邀请 就我个人的浅薄知识回答一下题主的疑问 先简单地回答题主的问题 我猜测题主可能是在学习了C语言之后对 int 类型变量的数值表示范围有限制而产生的疑问 就我的理解 整数不能无限大有两个原因 受限于机器字长与机器中的整数表示方式
  • 2015/4/28总结--git编辑文件---sts创建动态工程

    1 在git 中创建并编辑文件的命令如下 cd touch test txt vi touch test txt 编辑完成时先按Esc退出键 再输入 wq即可保存并退出编辑 2 在spring Tool Suite中创建动态的web 工程
  • muduo net库学习笔记7——用于创建服务器的类TcpServer

    muduo为每个EventLoop设计了runInLoop和queueInLoop函数用来将本该在其他线程执行的线程不安全函数放到它所属线程执行 从而达到线程安全 muduo采用采用one loop per thread的设计思想 即每个线
  • python+opencv分类器训练模型,运动物体识别检测,无人机识别(源码直接下载可用)

    一 简介 使用opencv traincascade 分类器的训练模型包括两个主要阶段 模型的训练阶段和检测阶段 本文档概述了训练自己的弱分类器的级联所需的功能 当前指南将逐步完成所有不同阶段 收集训练数据 准备训练数据并执行实际模型训练
  • Es6基础知识,非常适用前端工作者

    Es6是javascript 的新标准 变量声明 et 1 let声明的关键字和var 声明的基本一致 2 let声明的关键字是局部作用域 只在一对 中启用 3 let声明的变量不会存在变量提升 先把所有变量和函数提升到最前面 变量同意赋值
  • MockMvc测试和spring boot视图开发

    文章目录 导入配置 使用步骤 1 Model准备 2 创建控制器 3 Web测试的支持 视图 JSP 开发 配置文件 编写控制器 环境配置 自定义过滤器 导入配置 pom xml
  • 深度学习中的深度前馈网络简介

    几乎所有的深度学习算法都可以被描述为一个相当简单的配方 特定的数据集 代价函数 优化过程和模型 在大多数情况下 优化算法可以定义为求解代价函数梯度为零的正规方程 我们可以替换独立于其它组件的大多数组件 因此我们能得到很多不同的算法 通常代价
  • unity服务器无响应什么意思,Unity客户端 - 服务器基本问题

    我应该听什么端口 我应该担心的港口 转发 这是一个短语我经常看到卡住的 这是给你的 你可以使用任何你想要的端口 正确的做法是为您的游戏选择约10端口 然后选择1端口作为默认端口 例如 我们从端口10000至10010中选择 让我们将端口10
  • opencv学习历程5 ---- 处理像素点的三种方法

    ConsoleApplication1 cpp 此文件包含 main 函数 程序执行将在此处开始并结束 include
  • 算法基础——大O表示法

    本期主题 算法的大O表示法 目录 1 什么是大O表示法 2 时间复杂度 2 1 时间复杂度定义 2 2 常见算法的时间复杂度 3 数组与链表对比 1 什么是大O表示法 大O表示法是一种特殊的表示方式 指出了算法的速度 指出了最糟情况下的运行
  • 无刷直流风扇PWM调速接线教程(1)

    这是一款服务器使用的大功率无刷轴流风扇 采用的是两个风机级联的方式 提高风压与空气流量 能够快速带走机箱内的热量 正因为如此 这款风扇的功率 转速以及噪音都十分的 暴力 所以有的朋友喜欢称之为 暴力风扇 可以通过图片看到这款风扇的线束有8根
  • 融云出海:两极分化的网红大户「拉美」如何出海制胜

    8 月 17 日 本周四 融云直播课从排查问题到预警风险 社交产品如何更好保障体验 留住用户 欢迎点击报名 处于世界另一端的拉美市场 近些年逐步成为了出海新兴目的地的代表区域 关注 融云全球互联网通信云 了解更多 这里有热衷社媒的网红大国
  • keil5同一个程序编译出来的bin文件大小不一样

    起因 在用一个别人的程序时 出现了设备死机的现象 但是同样的程序别人使用没有问题 经过排查发现生成的bin文件大小和别人的不一样 开始以为是keil和keil编译器的版本不同的问题 但是换成相同的版本还是不行 最后发现是keil配置的优化等