今天在技术交流群看到这么一个问题,大概意思就是:同一个代码工程(源码不变),因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编译器
本文就分享到这里,大家如果还有遇到类似的奇奇怪怪的问题,欢迎留言讨论。
审核编辑:汤梓红
-
单片机
+关注
关注
6044文章
44632浏览量
639384 -
WINDOWS
+关注
关注
4文章
3584浏览量
89481 -
keil
+关注
关注
69文章
1214浏览量
167437 -
编译器
+关注
关注
1文章
1642浏览量
49336
原文标题:单片机代码不变,hex却变了?
文章出处:【微信号:strongerHuang,微信公众号:strongerHuang】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
Keil修改ARM编译器及配置方法
![<b class='flag-5'>Keil</b>修改ARM<b class='flag-5'>编译器</b>及配置方法](https://file1.elecfans.com/web2/M00/A3/B1/wKgZomUJCnSAQ9k0AADF_0p_RvA814.png)
Keil编译器优化问题
Keil C51编译器用户手册 中文版
Keil C编译器编程规则和代码优化
![<b class='flag-5'>Keil</b> C<b class='flag-5'>编译器</b>编程规则和代码优化](https://file.elecfans.com/web2/M00/48/E7/pYYBAGKhtCyAazfcAAAR7jCBkQI518.jpg)
如何在Keil MDK中使用GCC编译器工具链
使用keil开发华大MCU时的版本问题
![使用<b class='flag-5'>keil</b>开发华大MCU时的<b class='flag-5'>版本</b>问题](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
如何在e² studio中添加IAR和Keil的ARM编译器
使用ARMClang V6版本编译器出现错误的解决方法
![使用ARMClang V6<b class='flag-5'>版本</b><b class='flag-5'>编译器</b>出现错误的解决方法](https://file1.elecfans.com/web2/M00/89/4A/wKgZomSACfyAbWGTAAAhMYMwOy4395.png)
评论