0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

strongerHuang 来源:strongerHuang 2023-09-08 09:39 次阅读

今天在技术交流群看到这么一个问题,大概意思就是:同一个代码工程(源码不变),因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:

6541b078-4dde-11ee-a25d-92fbcf53809c.png

Keil V5.36默认自带编译器为AC5.06-7和AC6.16:

65791fe0-4dde-11ee-a25d-92fbcf53809c.png

而这个工程源代码没变、优化选项(配置)没变,编译出来的Hex文件却不一样:

65bd2474-4dde-11ee-a25d-92fbcf53809c.png

如何解决这种问题?

1.使用相同开发环境

这里的开发环境主要指Keil版本,比如:以前用Keil V5.14,现在也继续使用V5.14版本。

当然,如果条件允许,操作系统(Windows)也最好一样,有可能会因为操作系统导致编译结果一样。

上个月才给大家分享过一篇文章:软件工具没事别瞎升级

2.使用相同编译器

当然,如果不能做到上面说的软件版本以及系统一样(有的人就喜欢新版本的软件),可以使用相同版本编译器来尽量保持一致。

不管是这里说的Keil Arm Compiler 编译器,还是GCC等工具,道理都是一样。

Keil的编译器可以修改,可能很多小伙伴还不知道,这里就给大家说一下。

更换Keil编译器的方法比较简单,到Keil(Arm)官方下载你需要版本的编译器,自己安装一下即可。

方法比较简单,这里就不讲述了,具体可以参看我之前分享的文章:手把手教你升级Keil MDK的ARM编译器

本文就分享到这里,大家如果还有遇到类似的奇奇怪怪的问题,欢迎留言讨论。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6035

    文章

    44554

    浏览量

    634635
  • WINDOWS
    +关注

    关注

    3

    文章

    3541

    浏览量

    88623
  • keil
    +关注

    关注

    68

    文章

    1212

    浏览量

    166840
  • 编译器
    +关注

    关注

    1

    文章

    1623

    浏览量

    49108

原文标题:单片机代码不变,hex却变了?

文章出处:【微信号:strongerHuang,微信公众号:strongerHuang】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Keil修改ARM编译器及配置方法

    Keil MDK自 V5.36 版本之后,默认就不带 Arm Compiler V5版本编译器。如果需要使用 V5 版本
    发表于 09-19 10:41 4604次阅读
    <b class='flag-5'>Keil</b>修改ARM<b class='flag-5'>编译器</b>及配置方法

    Keil编译器优化问题

    大家好,我在使用单片机程序编译过程中,碰到了一些问题,恳请高手回答。具体描述如下: 当使用keil编译器编译过程中,设置为8级优化,产生的烧写文件,就可以在硬件平台上正常运行。但是如果
    发表于 12-18 16:39

    C51编译器软件 V6.02

    C51编译器软件 KEIL V6.02
    发表于 12-27 15:51 71次下载

    Keil C51编译器用户手册 中文版

    Keil C51编译器用户手册 中文版:本手册讲述对8051 的目标环境,如何使用Cx51 优化C 编译器编译C 程序Cx51 编译器包,可
    发表于 08-06 08:51 0次下载

    Keil C编译器编程规则和代码优化

    本内容介绍了Keil C编译器编程规则和代码优化,要实用好单片机就必须清楚它的内部结构组织结构,无论是在芯片的选择还是代码的编写
    发表于 04-20 17:37 315次下载
    <b class='flag-5'>Keil</b> C<b class='flag-5'>编译器</b>编程规则和代码优化

    编译器_keil的优化选项问题

    keil编译器的优化选项针对ARM,对STM32编译的一些优化的问题
    发表于 02-25 14:18 3次下载

    基于Atmel Studio 6软件的KEIL ARM 编译器使用

    基于Atmel Studio 6软件的KEIL ARM 编译器使用
    的头像 发表于 07-04 09:49 5760次阅读
    基于Atmel Studio 6软件的<b class='flag-5'>KEIL</b> ARM <b class='flag-5'>编译器</b>使用

    关于KEIL ARM编译器的使用介绍

    KEIL ARM编译器的使用
    的头像 发表于 07-10 10:50 6332次阅读

    控制IRQ和FIQ中断的编译器内部函数 基于Keil MDK

    控制IRQ和FIQ中断的编译器内部函数 - 基于Keil MDK
    的头像 发表于 02-29 16:45 2539次阅读

    如何在Keil MDK中使用GCC编译器工具链

    Keil MDK 是否支持编译器?有没有办法选择其他编译器可能你使用其他GUN工具链进行编译时,会出现类似如下错误: --- Error
    的头像 发表于 11-20 15:53 4688次阅读

    使用keil开发华大MCU时的版本问题

    问题:使用keil配置华大MCU的开发环境时,按照官网的流程,从华大官网下载了相应得芯片PACK包后,在编译时依旧提示各种配置错误。解决方案:推荐使用keil5.28及以上版本进行开发
    发表于 11-16 10:21 0次下载
    使用<b class='flag-5'>keil</b>开发华大MCU时的<b class='flag-5'>版本</b>问题

    Keil编译器--结构体指针函数;结构体作为参数时,不能调用结构体指针函数

    Keil编译器很多奇葩的地方,比如很多程序的写法在keil编译器里面实现是实现不了的,并且不报错,而且莫名其妙的死机。结构体里面有函数指针时,直接调用是可以的,但是在当结构体作为参数传
    发表于 12-20 19:41 19次下载
    <b class='flag-5'>Keil</b><b class='flag-5'>编译器</b>--结构体指针函数;结构体作为参数时,不能调用结构体指针函数

    如何在e² studio中添加IAR和Keil的ARM编译器

    过程,帮助客户有效的提升开发效率。 在较早版本的e 2  studio中,针对瑞萨的RA系列RAM内核的产品,默认安装的是GCC的编译器,但在实际的应用过程中,很多的客户都习惯于使用IAR或Keil
    的头像 发表于 03-14 10:45 1929次阅读

    Keil MDK使用GCC编译器的方法

    有网友问:Keil 编译速度有点慢,它支持GCC编译吗?
    的头像 发表于 03-24 09:57 3078次阅读
    <b class='flag-5'>Keil</b> MDK使用GCC<b class='flag-5'>编译器</b>的方法

    使用ARMClang V6版本编译器出现错误的解决方法

    很多STM32开发者使用ARM mdk IDE进行开发,我们知道ARM MDK IDE早已推出ARMClang V6版本编译器了。不过,当我们把在V5版本经ARMCC编译通过的工程文
    的头像 发表于 06-07 12:32 6897次阅读
    使用ARMClang V6<b class='flag-5'>版本</b><b class='flag-5'>编译器</b>出现错误的解决方法