KEIL5 编译错误解决:MDK 5.37 及以上版本添加 AC5(ARM Compiler 5)编译器

KEIL5 编译错误解决:MDK 5.37 及以上版本添加 AC5(ARM Compiler 5)编译器

问题现象

在安装 Keil MDK 5.37 或更高版本后,编译某些旧工程(尤其是基于 STM32 标准库或早期 HAL 库的项目)时,可能出现如下错误:

原因分析:从 MDK 5.37 版本开始,ARM Compiler 5(AC5,即 ARMCC)不再默认随安装包提供,而是只包含 Compiler 6(AC6,基于 LLVM)。许多老工程配置为使用 AC5,因此直接编译会失败。

解决方法:手动添加 AC5 编译器

步骤 1:下载 AC5 编译器安装包

前往 ARM 官方 Keil 网站下载 Legacy 支持包:

  • 网址:https://www.keil.com/download/legacy/
  • 找到 ARM Compiler 5.06u7 或类似版本(注意需要与你的 MDK 版本兼容,一般 5.06u7 适用大多数情况)
  • 选择 Windows 32-bit 版本下载(ARMCC506u7.exe.zip

如果官网下载慢或需要注册,也可以在搜索引擎中搜索"ARM Compiler 5.06u7 download"寻找可靠镜像(注意安全)。

步骤 2:解压安装到 MDK 目录

  1. 如果你下载的是 .exe 安装包,直接运行,安装路径选择你的 MDK 安装根目录 (例如 C:\Keil_v5)。
  2. 如果下载的是 .zip 压缩包,解压后将里面的 ARMCC 文件夹完整复制到 你的MDK安装路径\ARM 目录下。
    • 最终路径示例:C:\Keil_v5\ARM\ARMCC
    • 该文件夹下应包含 binlibinclude 等子目录。

步骤 3:在 Keil 中配置使用 AC5

  1. 打开你的 Keil 工程。
  2. 点击菜单栏 ProjectManageProject Items
  3. 切换到 Folders/Extensions 标签页。
  4. ARM Compiler 区域,点击 Add another ARM Compiler Version 按钮。
  5. 浏览并选择你刚才放置的 ARMCC 文件夹(例如 C:\Keil_v5\ARM\ARMCC)。
  6. 确认添加后,列表里会出现类似 ARM Compiler 5.06u7 的条目。
  7. 点击 OK 保存设置。

步骤 4:为目标工程选择 AC5 编译器

  • 打开 ProjectOptions for Target 'XXX'(或直接点击工具栏的"魔术棒"图标)。
  • 切换到 Target 标签页。
  • Code Generation 区域,找到 ARM Compiler 下拉框。
  • 选择你刚刚添加的 ARM Compiler 5.06u7(或对应版本)。
  • 点击 OK 保存。

步骤 5:重新编译

现在再次点击 Build 按钮,工程应该能够正常使用 AC5 编译,不再提示编译器缺失。

扩展说明

  • 为什么不用 AC6:虽然 AC6 更新、优化更好,但部分老代码(尤其是依赖 ARMCC 特定扩展、内联汇编语法、或者未更新的库)不兼容 AC6,迁移成本较高。添加 AC5 可以快速解决编译问题。
  • 未来推荐:建议逐步将工程迁移至 AC6,因为 ARM 已不再更新 AC5,未来新器件和功能可能仅支持 AC6。迁移时主要注意:内联汇编语法差异、编译选项调整、以及可能的 warning/error 修正。
  • 多版本共存:你可以同时保留 AC5 和 AC6,在不同工程间按需切换,互不影响。

总结

通过在 MDK 5.37 及以上版本中手动添加 AC5 编译器,可以轻松兼容需要 ARM Compiler 5 的老工程。核心三步:下载 Legacy 包 → 解压到 MDK/ARM 目录 → 在 Keil 中配置并选择。希望这篇指南能帮你快速解决编译报错问题,继续愉快地开发和调试。

相关推荐
sramdram2 天前
基于32位微控制器的FOC汽车水泵方案
单片机·嵌入式硬件·汽车·微控制器·32位微控制器
开发笔记-阿牛2 天前
解析一款有意思的产品||CK6159A语音芯片设计的儿童专注力训练机-舒尔特玩具
stm32·单片机·嵌入式硬件·音频
残影飞雪2 天前
ESP32-C5下载烧录固件失败报错的原因
单片机·嵌入式硬件
搞全栈小苏2 天前
SIMetrix_simplis8.4安装教程——附安装包
stm32·单片机·嵌入式硬件·电力电子
qq_573967822 天前
STM32控制器
stm32·单片机·嵌入式硬件
某林2122 天前
履带小车底盘stm32F103RCT6开发
人工智能·stm32·单片机·嵌入式硬件·架构·人机交互·ros2
sramdram2 天前
低功耗MCU微控制器在动态血糖仪(CGM)中的应用方案
单片机·嵌入式硬件·mcu·mcu微控制器
Dlrb12112 天前
ARM--IMX6ULL的SDK学习,BSP开发工程管理,以及链接脚本与Makefile的编写
单片机·嵌入式硬件·arm·sdk·链接脚本·i.mx6ull·cortex-a7
李永奉2 天前
杰理可视化SDK开发-配置ANC主动降噪功能模块教程
单片机·嵌入式硬件·物联网
做萤石二次开发的哈哈2 天前
萤石 ERTC Windows SDK 包含哪些类型定义?
stm32·单片机·嵌入式硬件