不同版本Keil,编译器可能不同

今天在技术交流群看到这么一个问题,大概意思就是:同一个代码工程(源码不变),因keil版本不同,程序(hex)却变了。
对于很多新手来说,肯定会纳闷,明明代码没变,为啥结果不一样了呢? 这其中的“变量”就keil版本从v5.14变为了v5.28。
而优化选项又没变,那什么变了? 是的,有经验的老司机肯定看出来了,就是编译器的版本变了。
不同版本keil,编译器可能不同
为了验证这个问题,我安装了以前老版本的keil v5.28和v5.36,默认自带的编译器ac(arm compiler),不管是ac5,还是ac6版本都不一样。
keil v5.28默认自带编译器为ac5.06-6和ac6.12:
keil v5.36默认自带编译器为ac5.06-7和ac6.16:
而这个工程源代码没变、优化选项(配置)没变,编译出来的hex文件却不一样:
如何解决这种问题?
1.使用相同开发环境
这里的开发环境主要指keil版本,比如:以前用keil v5.14,现在也继续使用v5.14版本。
当然,如果条件允许,操作系统(windows)也最好一样,有可能会因为操作系统导致编译结果一样。
上个月才给大家分享过一篇文章:软件工具没事别瞎升级
2.使用相同编译器
当然,如果不能做到上面说的软件版本以及系统一样(有的人就喜欢新版本的软件),可以使用相同版本编译器来尽量保持一致。
不管是这里说的keil arm compiler 编译器,还是gcc等工具,道理都是一样。
keil的编译器可以修改,可能很多小伙伴还不知道,这里就给大家说一下。
更换keil编译器的方法比较简单,到keil(arm)官方下载你需要版本的编译器,自己安装一下即可。
方法比较简单,这里就不讲述了,具体可以参看我之前分享的文章:手把手教你升级keil mdk的arm编译器
本文就分享到这里,大家如果还有遇到类似的奇奇怪怪的问题,欢迎留言讨论。


英特尔移动处理器规划曝光:拭剑10nm制程
这十大物联网(IoT)企业你认识几个?
MES生产管理系统实施前需要考虑的问题
CES亚洲网络技术前瞻 物联网将引新浪潮
PHEV和HEV的对比和兼容性开发思路
不同版本Keil,编译器可能不同
小米的手机业务正遭遇压制,手机业务的发展对小米影响深远
六种常用的机器人浅析
全球5G竞争将进入新一轮的竞争赛道
一文解读电感饱和原因与理论分析
聚飞光电:MiniLED业务出货量逐月上涨
D型SuperGaN FET可用作任何E型TOLL封装FET的直接替代品
苹果决定推迟AirTag 2发布至明年完成库存清理
亿航智能实现盈利,但全面商业化任重而道远
解读无人驾驶汽车工作过程 用语音即可控制
骁龙电竞先锋赛·2023秋季赛正式开赛,全新赛制传递移动电竞魅力
小米手环4在日本亚马逊首销获四个第一名,售价是3839日元
5G物联一张网,迈向千亿物联新时代
四家品牌厂商总销量占国内智能机市场份额84.6%,华为稳居市场首位
功率放大器基于微流控技术的液滴微颗粒分选中的应用