最近对使用keil进行了升级,发现高版本KEIL中对于AC5的编译器没有安装,而在之前的项目中,需要使用AC5编译器进行调试,使用AC6编译器的时候,发现有很多错误。
对于一些友商32位单片机,发现低版本的keil无法安装一些pack包,没办法只好对高版本的MDK添加AC5的编译器。
一:手动下载AC5的编译器。
AC5: ARM Compiler 5,传统编译器,使用 --c99 编译。
AC6: ARM Compiler 6,基于 LLVM/Clang 的新编译器,默认使用 -std=c99 等。性能更好,但某些旧代码可能需要修改才能编译通过。
第一种方法就是去官方进行下载,https://developer.arm.com/downloads/view/ACOMP5
第种方法就是:在低版本的MDK中将AC5 编译器复制出来。
二:安装AC5编译器
将下载的AC5安装到MDK的文件中,这里最好是默认安装,如果不是默认安装的情况下,也需要将AC5的编译器安装到arm的目录下,方便软件识别。
三:软件配置如下所示
打开 Keil MDK。
打开一个工程,点击魔术棒工具 Option for Target。转到 Target 选项卡。
在 Code Generation 区域,点击 Use Default Compiler Version 5 下拉菜单。
如果安装成功,你应该能看到新安装的编译器版本(例如 Use Default Compiler Version 5 或者具体的 Compiler Version 5)。
选择它,然后点击 OK。


AC5和AC6 编译器的区别如下:
这是 AC5 和 AC6 的分散加载文件语法差异导致的。AC5 的分散加载文件可能需要使用 * 来匹配所有对象文件,而 AC6 需要使用 *.*。你需要根据编译器版本调整你的 .sct 文件。
Keil 找不到编译器
确保安装或复制的路径没有中文或特殊字符。
尝试使用方法二中的 Project -> Manage -> Project Items -> Folders/Extensions 来手动添加路径。
代码在 AC5 下编译通过,但在 AC6 下报错
这是迁移旧项目时最常见的问题。AC6 语法检查更严格。常见原因包括:
隐式函数声明(未包含正确的头文件)。
变量定义和作用域问题。
内联汇编语法不同。
通常需要根据 AC6 的错误提示逐一修改代码。
当然我这里还尝试了另外一个比较协修的方法就是:为了安装AC5的编译器,先安装一个低版本的,成功之后,再安装一个高版本的的。也是可以的。
我要赚赏金
