首页 > 其他分享 >痞子衡嵌入式:在MDK开发环境下自定义安装与切换不同编译器版本的方法

痞子衡嵌入式:在MDK开发环境下自定义安装与切换不同编译器版本的方法

时间:2024-09-10 23:13:13浏览次数:8  
标签:MDK 自定义 痞子 编译器 版本 Arm Compiler


  大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家分享的是在MDK开发环境下自定义安装与切换不同编译器版本的方法

  Keil MDK 想必是嵌入式开发者最熟悉的工具之一了,自 2005 年 Arm 公司收购 Keil 公司之后,MDK 就走上了发展快车道,从 v2.50a 一路狂奔到现在最新的 v5.40, 累计有 75 个版本。

  伴随着 IDE 版本迭代,Arm 公司为其搭配的 C/C++ 编译器也在不断更新,光类型就有三种:RealView Compilation Tools (简称 RVCT)、Arm Compiler 5(即经典的 armcc)、Arm Compiler for Embedded(又称 Arm Compiler 6 或 armclang),这三个编译器均各自发展了很多版本。

  • MDK 也支持使用标准 Arm GCC 以及 LLVM for Arm(clang) 编译器。

  痞子衡之前使用了很长一段时间的 MDK v5.31,这个版本的 IDE 默认同时带了 Arm Compiler 5 和 Arm Compiler 6,用户可以按需自由选择编译器版本。痞子衡在 MDK v5.31 下(选择 Arm Compiler 5)设计了很多小工程,功能测试稳定。但是最近新安装了 MDK v5.38 之后,发现这个版本 IDE 默认仅支持 Arm Compiler 6,而痞子衡之前的小工程在 Arm Compiler 6 下编译出来功能出现了异常。

  要解决这个因为不同编译器引起的兼容问题,要么在 Arm Compiler 6 下调试代码找到问题,要么干脆切回到 Arm Compiler 5。今天痞子衡就来聊聊如何在 MDK 下安装自选编译器版本:

一、切换编译器方法

  随便打开一个 MDK 工程,在工程选项 Target / ARM Compiler 里能看到当前已安装的所有编译器版本,痞子衡当前的 MDK v5.38 里仅有一个默认的 Arm Compiler 6 (具体版本是 6.19),这里也同时显示了 Arm Compiler 5 选项,但是状态是 Missing,即不可用状态。

  如果安装了多个编译器版本,只需要在这里切换选项即可。

二、安装自选编译器版本

  现在我们尝试给 MDK v5.38 安装一个 Arm Compiler 5 版本的编译器。首先需要在如下 Arm developer 网站下载一个合适的编译器补丁包。

  痞子衡选择了最新的 Arm Compiler 5.06 update 7 (build 960) 版本(Arm 早在 2017 年便宣布了将停止对 Arm Compiler 5 的维护,该版本应该是最后一个 AC5 版本),下载后得到 ARMCompiler_506_Windows_x86_b960.zip 包。

  解压 ARMCompiler_506_Windows_x86_b960.zip 包后,双击 \Installer\setup.exe 进入安装界面,将该编译器版本自定义安装到 MDK 路径下(比如 \Keil_v5\ARM\ARM_Compiler_5.06u7),与原默认 \Keil_v5\ARM\ARMCLANG 并列。

  编译器补丁安装完成后,打开 MDK,进入菜单栏 Project / Manage / Project Items 配置,切换到 Folders/Extensions 选项卡,按如下操作将 Arm Compiler 5.06u7 加入到编译器列表(单击 Add another ARM Compiler Version to List 时选择 \Keil_v5\ARM\ARM_Compiler_5.06u7 路径识别)。

  操作完成后,重新打开 MDK,这时候就能在工程选项编译器选择里看到新安装的 Arm Compiler 5.06u7 啦。当然你想安装多个 AC5 或者 AC6 版本也是可以的,方法一样。

  至此,在MDK开发环境下自定义安装与切换不同编译器版本的方法痞子衡便介绍完毕了,掌声在哪里~~~

欢迎订阅

文章会同时发布到我的 博客园主页CSDN主页知乎主页微信公众号 平台上。

微信搜索"痞子衡嵌入式"或者扫描下面二维码,就可以在手机上第一时间看了哦。

标签:MDK,自定义,痞子,编译器,版本,Arm,Compiler
From: https://www.cnblogs.com/henjay724/p/18407449

相关文章

  • tailwindcss学习:2 自定义类的使用和常见的tailwindcss前缀
    1.自定义类的定义在Tailwind CSS中,您可以通过 tailwind.config.js 文件定义自定义类。类似 border-custom-green 这种写法实际上是一个组合类,通常是由自定义类和内置类结合而成的。示例:自定义边框颜色假设您在 tailwind.config.js 中定义了一个自定义颜色://tailwi......
  • C++:使自定义类支持迭代器
    概述在C++中,链表迭代器是一种用来遍历链表(如std::list)元素的工具。链表是一种数据结构,其中每个元素(节点)包含一个数据值和一个指向下一个节点的指针。链表迭代器允许以类似于数组的方式访问链表中的元素,但不需要直接操作指针。链表迭代器的作用访问元素:链表迭代器使你能够......
  • WTForms中如何自定义字段类型
    在WTForms中,自定义字段类型通常涉及创建一个新的类,该类继承自wtforms.Field或其任何子类,并根据需要重写方法以实现特定的行为。以下是一个简单的例子,展示了如何创建一个自定义的字段类型:pythonfromwtformsimportField,validatorsclassMyCustomField(Field):def_......
  • 编译器与解释器:核心差异与实际应用
    目录1.编译器:从源代码到机器代码2.解释器:即时执行3.联系:代码的执行4.区别:性能与灵活性5.现代软件开发中的应用6.结论        在软件工程的世界里,代码的执行方式多种多样,其中最常见的两种方式是通过解释器和编译器。这两种工具在软件开发中扮演着至关重要......
  • 【Harmony】文本高亮显示、关键字凸显字体大小、颜色、背景色等风格自定义、嵌入html
    预览效果如图(网上找到demo,如有疑问请留评论蛤!):这个是超链接例子的数据结构如下:newCustomMessage($r('app.media.styled_text_user_image1'),'央视新闻','2小时前',[newCustomSpan(CustomSpanType.Normal,'【准备回家!'),newCustomSpan(CustomSpanType.Hasht......
  • VUE框架Vue3使用自定义的ref实现延迟加载效果的实现解决setTimeout过多导致的抖动问题
    import{customRef}from"vue";exportdefaultfunction(){//自己定义一个reffunctionuseDebouncedRef(value){//自定义的ref函数体需要符合ref规范//通过调用customRef来获取一个ref实例//调用customRef必须要给出一个回调函数作为形......
  • 一个类才几百行/搞定各种自定义委托/涵盖各种场景需求/所有委托一网打尽/用法极其简单
    一、应用场景某个字段需要提供下拉框进行选择,下拉框可选是否允许编辑。某个字段需要提供密码框进行输入,密文显示字段值。某个字段需要提供日期框下拉选择日期时间。某个字段需要提供微调框设定值。某个字段需要提供进度条显示字段值。某个字段列需要禁用。各种委托控件可......
  • openVX加速-新增自定义节点和示例代码
    在OpenVX中添加自定义节点大概通过以下步骤实现:定义自定义节点的计算逻辑:你需要编写一个C函数来实现自定义的图像处理操作。创建自定义节点:通过定义一个自定义节点核(kernel),并将其注册到OpenVX上下文中。在图中使用自定义节点:使用你定义的节点与OpenVX提供的内......
  • echarts的tooltip自定义
    tooltip:{      trigger:'axis',      formatter:function(params){       varhtml=params[0].name+'<br>';       //params[i].marker:对应数据的圆点样式       for(vari=0;i<params......
  • 自定义界面扫码,满足应用个性化定制需求
    二维码识别技术已经成为我们日常生活中不可或缺的一部分,广泛应用于支付、交通、餐饮、生活服务以及智能家居等领域。它不仅是移动应用的重要流量入口,更是连接线上线下世界的桥梁。不同的App在扫码界面的设计上各展其特色,从页面元素到交互方式,都体现了开发者对用户体验的重视。然......