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 中配置并选择。希望这篇指南能帮你快速解决编译报错问题,继续愉快地开发和调试。

相关推荐
FreakStudio10 天前
W55MH32L-EVB 上手测评:硬件 TCP/IP 加持的以太网单片机,MicroPython 零门槛开发
python·单片机·嵌入式·大学生·面向对象·并行计算·电子diy·电子计算机
✎ ﹏梦醒͜ღ҉繁华落℘16 天前
单片机基础知识---stm32单片机的优先级
stm32·单片机·mongodb
zd84510150016 天前
RS485 总线详解
单片机·嵌入式硬件
✎ ﹏梦醒͜ღ҉繁华落℘16 天前
编程基础 --高内聚,低耦合
c语言·单片机
科芯创展16 天前
1A,1MHz,30VIN,XZ4115,降压恒流LED驱动芯片
单片机·嵌入式硬件
AndyHeee16 天前
【SVC、PendSV(系统异常) 与 外设 IRQ 、NVIC笔记】
arm开发
集芯微电科技有限公司16 天前
四通道2A输出集成功率电感降压模块专为紧凑型方案设计
人工智能·单片机·嵌入式硬件·生成对抗网络·计算机外设
踏着七彩祥云的小丑16 天前
嵌入式测试学习第 37 天:异常场景测试:断电、拔插、干扰、非法指令
单片机·嵌入式硬件·学习
意法半导体STM3216 天前
【官方原创】如何为STM32CubeMX2配置Visual Studio Code配置方案
vscode·stm32·单片机·嵌入式硬件·策略模式·stm32cubemx·嵌入式开发
暮云星影16 天前
瑞芯微rk3588利用Rockchip NPU运行大语言模型(LLM)
arm开发·人工智能·语言模型·自然语言处理