新闻详情

新闻详情

首页 / 资讯中心 / 详情

Keil 5.37下ARM Compiler 5缺失的完整安装与配置指南

发布时间:2026/9/28 1:14:36来源:尧图网络
Keil 5.37下ARM Compiler 5缺失的完整安装与配置指南
升级到Keil 5.37之后你是不是也遇到过这种情况打开以前好好的工程编译按钮直接罢工Build Output窗口里跳出一行“Target Target 1 uses ARM-Compiler Default Compiler Version 5 which is not available”。我当时看到这行字的第一反应是工程文件坏了第二反应是Keil安装出了问题折腾了好一阵才反应过来——不是工程坏了也不是Keil坏了是5.37这个版本开始ARM Compiler 5也就是大家习惯叫的ARMCC或者AC5不再是默认安装的一部分了。这篇文章就是专门来解决这个问题的。我会把这个报错的来龙去脉讲清楚把网上搜了一堆也没人说明白的“ARMCC编译器去哪下载”“AC5怎么装回Keil 5.37”这些坑全部趟平顺便把装好之后可能遇到的其他连锁问题比如fromelf路径失效一并列出来。无论你是刚升级、准备升级还是已经卡在这个报错上几个小时了照着下面的步骤走都能把AC5装回去。1. 报错前因5.37把AC5“请出”了默认安装1.1 这个报错到底在说什么Keil的编译器下拉框里有一个选项叫“Default Compiler Version 5”老用户应该很熟悉。它指的是让工程使用ARMCC工具链也就是ARM Compiler 5命令行工具对应的是armcc.exe、armasm.exe、armlink.exe、fromelf.exe这一整套。5.36及更早的MDK安装包会把ARMCC一起装进C:\Keil_v5\ARM\ARMCC\目录你什么都不用管打开工程直接编译用的就是AC5。但从MDK 5.37开始Keil改变了打包策略默认只带ARM Compiler 6AC6对应ARMCLANG工具链ARMCC不再随安装包分发。于是问题就来了——你的工程文件.uvprojx文件里的pCCUsed标签里记录的还是AC5但新装的Keil里根本没有这个编译器组件系统只能报“not available”。1.2 为什么Keil非要这么干ARM官方早就宣布ARM Compiler 5进入维护模式maintenance mode不再增加新特性只做关键bug修复最后一个版本停在5.06 update 7build 960。而AC6基于LLVM/Clang架构对C99、C11支持更好、编译速度更快、代码体积优化也更强是官方认定的长期主力编译器。站在ARM的角度新版本捆绑AC6是理所当然的。但他们忽略了一件事嵌入式行业里有海量的存量工程是用AC5写的很多老型号的芯片SDK、ST的早期标准外设库、一些芯片厂商的底层驱动在AC6下编译轻则warning刷屏重则直接error。更别说很多老工程师写习惯了__asm内联汇编、__forceinline这些AC5风格的语法。所以不是大家不想用AC6是项目和代码确实离不开AC5。1.3 受影响最重的是这几类人简单归纳会被这个报错卡住的基本是三类老工程维护者工程是几年前创建的一直用AC5编译升级Keil后直接打不开工程编译。芯片SDK依赖者有些芯片厂商的老版本SDK或驱动库只在AC5下验证过换成AC6就会冒出一堆兼容性错误。有特殊语法依赖的开发者代码里用了AC5特有的关键字、内联汇编写法、__attribute__的某些旧式用法AC6不买账。我遇到过最惨的情况是有人直接把整个SDK工程拷到新电脑装好Keil 5.37后一编译就是成百上千行报错最后发现根本不是代码问题就是编译器没搭起来。1.4 先别急着骂确认两个基础信息在往下操作之前先确认两件事。第一确认你的Keil版本确实是5.37或更高打开Keil后菜单Help - About查看版本号第二确认你当前的工程确实需要AC5在魔术棒Options for Target- Target页签的“ARM Compiler”下拉框里看选的是什么。如果显示“Default Compiler Version 5”或“Use default compiler version 5”那你就来对地方了。2. 先分清你是哪种翻车现场我在排查这个问题的过程中发现同样一句“Default Compiler Version 5 not available”背后对应的场景其实不一样解决方案也有细微差别。先花两分钟搞清楚自己属于哪种能省不少事。2.1 场景A老版本升级上来的工程这种情况最常见你之前装的是Keil 5.36或更早版本工程一直用AC5编译某天手痒升级到了5.37可能没卸载旧版也可能直接覆盖安装然后打开老工程Build按钮点了没反应或者弹窗提示编译器不可用。这种场景的本质是工程的编译器配置还在但新装的环境里没有对应的编译器实体。升级时Keil不会自动帮你把AC5迁移过来你原来C:\Keil_v5\ARM\ARMCC目录里的东西要么被更新程序清掉了要么被残留的旧版本挡住了。2.2 场景B全新安装后想用AC5第二种情况是你在新电脑上或者刚格式化完系统从官网下载了最新的Keil 5.37/5.38/5.39安装包装完之后发现魔术棒里的编译器下拉框只有ARM Compiler 6或者干脆连选都没得选。这时候你不是“遇到报错”而是“发现AC5根本不存在”。这种场景的本质是安装包本身就没有包含AC5你需要手动补装。别指望在Keil的安装目录里翻出隐藏的ARMCC文件夹5.37之后的安装包真的没带。2.3 怎么快速判断自己属于哪种一个笨办法看C:\Keil_v5\ARM\目录下有没有ARMCC文件夹。如果有ARMCC但编译还是报错多半是路径配置或版本识别问题如果连ARMCC文件夹都不存在那就不用纠结了直接看下一章去下载安装。另一个判断点在报错时机打开工程就报错通常是工程文件里写死了编译器版本点击编译才报错通常是编译器检测环节没过。不管哪种最终解法都一样——把AC5正确装回去让Keil识别到。2.4 顺手排除一个容易混淆的报错如果你在Build Output里看到的是C9555E: Failed to check out license这跟AC5缺失完全是两码事。那是License授权问题多半是你没有安装对应的License或激活码过期。本文讲的Default Compiler Version 5 not available关键字是“not available”不可用强调的是编译器组件不存在不是授权问题。这个区别先记住免得后面排查错方向。3. 官方通道安装ARM Compiler 5.06 update 7既然AC5已经被踢出了默认安装包唯一正规的补装渠道就是ARM官网提供的ARM Compiler 5独立安装包。这个包官方一直在维护下载入口哪怕AC5处于维护模式也不影响下载和使用。3.1 下载前需要准备的账号ARM官网的东西现在基本都要登录账号才能下载。没有账号的先去注册一个邮箱验证通过后登录。这一步没什么技术含量但要注意验证邮件有时候会被邮箱系统扔进垃圾箱找不到了就去垃圾箱翻翻。如果用公司邮箱没收到换个人邮箱QQ邮箱、163邮箱等成功率更高。ARM的网站偶尔会抽风页面加载慢或下载按钮点了没反应刷新重试就行别急。3.2 找到正确的下载页面和安装包搜索“Arm Compiler 5”或者直接进ARM官网的Downloads区域找到“Arm Compiler 5.06 update 7”这个条目。注意版本号很多人在这一步下错——只认5.06 update 7build 960这个版本这是AC5的最后一个正式更新档稳定性和兼容性都最好。下载时选择对应操作系统的版本。Windows用户就下Windows版一般是一个.zip或自解压的.exe文件体积大概几百MB。别下成Linux或macOS版了那是给服务器交叉编译用的装到Windows上很麻烦。3.3 安装路径的讲究安装包拿到手后双击安装。有一个细节我必须单独拎出来说安装目录尽量不要乱改。ARM Compiler 5的默认安装路径和Keil的默认安装路径是有配套关系的默认情况下它检测到Keil装在了C:\Keil_v5就会自动把ARMCC放进C:\Keil_v5\ARM\ARMCC。如果你把Keil装在了D盘或自定义目录安装AC5时就要手动把路径指到对应的D:\xxx\ARM\ARMCCARM目录下的ARMCC子目录。为什么要强调这个因为后面Keil在识别编译器时默认会在Keil安装目录的ARM子目录下找ARMCC文件夹。装错位置的话Keil检测不到前面白忙活。安装过程没什么可选的一路Next就行。装完后去C:\Keil_v5\ARM\ARMCC\bin目录看一眼能看到armcc.exe、fromelf.exe、armlink.exe这些文件就说明核心组件到位了。3.4 让Keil识别到AC5Add another ARM Compiler Version装完之后回到Keil这时魔术棒Options for Target- Target页签 - “ARM Compiler”下拉框里应该能看到“ARM Compiler 5.06 update 7”了。如果没有需要手动添加打开Keil菜单栏选择 Project - Manage - Project Items。切到“Folders/Extensions”页签。找到“Add another ARM Compiler Version”区域点击右侧的浏览按钮。选择你的ARMCC目录就是能看到bin子目录的那一层比如C:\Keil_v5\ARM\ARMCC。确认后回到魔术棒里刷新一下下拉框AC5就会出现了。我见过某些网友分享的老教程会让你直接改TOOLS.INI配置文件来注册编译器路径那种方法在5.37之后不太可靠,Keil的识别逻辑改过。老老实实用GUI里的“Add another ARM Compiler Version”按钮这是最稳的。3.5 验证安装是否成功配置完成后随便开一个以前用AC5编译的工程或者新建一个最简单的空工程在魔术棒 - Target页签把ARM Compiler下拉框选成“ARM Compiler 5.06 update 7”。点编译看Build Output窗口的输出信息。正常的话会看到armcc开头的命令行输出比如armcc -c --cpu Cortex-M3 -D__MICROLIB ...说明AC5已经在干活了。这样最核心的问题就解决了。4. 装上AC5之后仍然可能踩的三个暗坑成功的喜悦先收一收。根据我的经历和你可能搜索到的“*** error: createprocess failed, command: c:\keil_v5\arm\armcc\bin\fromelf.”这类关键词真正折磨人的往往在装上AC5之后。这里列三个高频暗坑全部踩过之后再回头来感谢我不迟。4.1 暗坑一fromelf绝对路径失效导致的createprocess failed这是我在解决这个问题时看到搜索热度最高的一个报错*** error: createprocess failed, command: c:\keil_v5\arm\armcc\bin\fromelf.。这个报错的原因是这样的很多老工程在“Options for Target - User”页签里配置了After Build/Rebuild的后续命令用来调用fromelf.exe生成bin文件或反汇编文件。但你当年配置的时候路径写死成了c:\keil_v5\arm\armcc\bin\fromelf.exe。如果新电脑的Keil装了别的盘AC5装到了非默认目录或者你从别人电脑上拷贝了ARMCC目录过来那么Build阶段走得通最后生成bin文件的阶段就挂在这儿了弹出一句createprocess failed看起来像是权限问题其实根本原因是文件路径不存在。解决方法是打开魔术棒 - User页签找到After Build/Rebuild下面的命令输入框把fromelf相关的命令改成当前环境下的实际路径。更好的做法是改成相对路径或使用$KKeil安装目录变量比如$K$ARM\ARMCC\bin\fromelf.exe --bin -o $LL.bin #L这样不管Keil装到什么盘命令都能正确找到fromelf。4.2 暗坑二魔术棒里编译器下拉框还是“Default Compiler Version 5”AC5装好之后有些工程的魔术棒里显示的依然是“Default Compiler Version 5”而且编译还是会报not available。这是因为工程文件里锁定了编译器版本但新装AC5的版本标识和工程记录的不完全匹配。这时候不要跟它死磕直接把下拉框手动改成“ARM Compiler 5.06 update 7”就行。改完之后点OK再重新编译一次。如果你希望以后所有工程都默认用AC5可以在菜单Tools - “Set Default Compiler Version”里设置默认编译器不过Keil 5.37之后的版本这个入口找起来麻烦最直接的办法还是每个工程手动指定。4.3 暗坑三AC5和AC6的代码兼容性问题被当成编译器缺失还有一种情况是——你通过某种方式把AC5装回去了编译也不报“not available”了但冒出一堆语法错误、汇编错误怀疑自己是不是装了个假的ARMCC。其实不是假的是这工程本来就是为AC5准备的但在你升级的过程中某些中间版本的Keil已经把工程默认编译选项悄悄切到AC6了或者你新建文件时用了AC6的模板。此时你虽然选了AC5作为目标编译器但部分源文件、启动文件里的写法在新旧工具链之间不兼容。典型表现启动汇编文件startup_xxx.s里用了AC6不认识的伪操作。内联汇编写法不同AC5用__asm { ... }AC6要求__asm( ... )字符串写法或新语法。分散加载文件scatter file里有些AC5时代的隐含规则AC6下警告变错误。这类问题就得靠改代码来解决了不是装个编译器能绕过去的。我的建议是如果你的项目核心代码依赖AC5特性就锁死用AC5别来回切换如果新项目优先试试AC6有时候只是几个编译选项的问题忍一忍过去的收益其实更大。4.4 暗坑排查顺序一览为了方便排查我把装上AC5后可能遇到的报错和对应的处理思路整理成一张表报错或现象可能原因处理办法魔术棒里没有AC5选项ARMCC没安装或路径未被识别用Project Items - Folders/Extensions手动添加ARMCC目录编译时还有not available工程锁定的编译器版本和已安装版本不匹配魔术棒里手动选“ARM Compiler 5.06 update 7”createprocess failed fromelfUser页签里的命令路径是旧机器/旧盘符的绝对路径改成$K$变量相对路径或当前实际路径编译出现大量语法/汇编报错AC5/AC6工具链差异或工程文件被切到AC6确认编译器锁定在AC5必要时改代码兼容两边编译通过但生成不了bin文件fromelf命令缺失或参数不对检查User页签的After Build命令单独手动跑一遍fromelf验证5. 从这次翻车里总结的几条实操经验折腾完这一轮有些亏吃了之后必须长记性。下面这几条既是对这次问题的复盘也是给以后新装环境、团队协作时提个醒。5.1 离线安装包一定要归档ARM官网的下载入口还在但这类“旧版本维护模式”的软件说不准哪天入口就移动了、合并了甚至需要额外审批了。我现在会把自己用的所有工具链安装包单独存一个目录包括ARM Compiler 5.06 update 7安装包、各版本MDK安装包、常用芯片的Pack包全部放在一个移动硬盘和网盘里各一份。装新电脑时直接本地安装再也不用受下载速度和网页跳转的气。5.2 别信网上那些“拷贝大法”看到有论坛帖子说从装了AC5的电脑上把整个ARMCC文件夹拷过来放到新电脑的C:\Keil_v5\ARM\下面就能用。我试过结论是部分场景能用但极易翻车。ARMCC目录里有一些依赖系统注册表项和路径变量的组件拷过来之后Keil未必能正确识别版本号就算识别到了fromelf等工具的路径也容易出问题。相比之下官方安装包多花十分钟下完、装好真的省心太多。5.3 AC5和AC6谁能共存的策略很多人以为装了AC5会顶掉AC6其实不会。Keil 5.37及以后的版本完全支持AC5和AC6共存C:\Keil_v5\ARM下会同时出现ARMCC和ARMCLANG两个目录分别对应AC5和AC6。编译老工程时选AC5编译新工程时选AC6互不干扰。我的建议是别急着全面拥抱AC6也别死守AC5不放。老工程优化稳定就不要乱动继续用AC5新项目可以花点时间适应AC6慢慢积累迁移经验。两条腿走路项目才稳。5.4 升级Keil前养成检查编译器选项的习惯这次翻车给我的最大教训是升级大版本IDE之前先打开自己的主力工程看一眼编译器配置。如果用的是ARM Compiler 5升级前就要确认新版Keil的配套AC5安装包已经准备好或者干脆保留旧版本Keil不卸载。我还见过有人在升级后把老工程全部重新编译一遍“验证兼容性”结果被一堆编译器差异的报错搞得心态爆炸。5.5 在工程文件里留一条“编译器备忘”一个团队里如果多个人维护同一套代码建议在工程说明文档或者README里明确写上“此工程使用ARM Compiler 5.06 update 7编译安装新环境后需额外安装ARMCC。”这种一句话的备忘能让后来的人少折腾好几个小时。我自己是直接把编译器版本信息写在*.uvprojx文件的注释区或者放在git仓库的README开头。6. 写在最后的个人体会说到底“Default Compiler Version 5 not available”这个报错本身并不复杂复杂的是它牵扯出的工具链新旧交替、老项目存量维护、ARMCC和AC6语法差异这一连串问题。我这次处理完后复盘最大的感受就是做嵌入式的别跟编译器版本过不去——该安装的组件老老实实装好该锁定的版本老老实实锁死能少很多无谓的折腾。最后再分享一个有价值的小技巧装好AC5后可以顺手在命令行跑一次armcc --version看到“Product: ARM Compiler 5.06 update 7”这样的信息就说明你的AC5是完全可用的。以后但凡再遇到什么奇怪的编译报错先跑这一句排查编译器状态能帮你省下不少冤枉时间。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

Accurate and Interpretable Postmenstrual Age Prediction via Multimodal Large Language Model 2026/9/28 3:34:45

Accurate and Interpretable Postmenstrual Age Prediction via Multimodal Large Language Model

文章主要内容和创新点 主要内容 本文旨在解决新生儿月经后年龄(PMA)预测中准确性与可解释性的双重挑战。研究基于多模态大型语言模型(MLLM)Qwen2.5-VL-7B,通过参数高效微调(PEFT)策略(结合指令微调与低秩适应LoRA),利用新生儿脑部MRI衍生的4种2D皮质表面投影图(皮…

阅读更多 →
langchain4j-RAG企业真实项目实战-检索生成 2026/9/28 3:34:45

langchain4j-RAG企业真实项目实战-检索生成

LangChain4j 实战系列第三篇,也是我认为最见功力的一篇:检索生成。前两篇我们把项目骨架和文档入库讲完了,知识已经"存"进去了,这一篇解决另一半问题——用户开口提问之后,系统怎么把对的知识、以对的形式、…

阅读更多 →
具身智能创新设计方案(32):从单点突破到底座协同的范式进化必然性 2026/9/28 3:34:38

具身智能创新设计方案(32):从单点突破到底座协同的范式进化必然性

前沿技术探索:TVA智能体(简称TVA)TVA智能体(亦称“AI智能体视觉”)是依托Transformer架构与“因式智能体”理论构建的新型工业视觉系统,也是当前最具代表性的具身视觉技术之一。它有机融合深度强化学习&…

阅读更多 →
具身智能协同演化动力学(5):物理因果推演优势与落地适配短板的深层矛盾 2026/9/28 3:34:38

具身智能协同演化动力学(5):物理因果推演优势与落地适配短板的深层矛盾

前沿技术探索:TVA智能体(简称TVA)TVA智能体(亦称“AI智能体视觉”)是依托Transformer架构与“因式智能体”理论构建的新型工业视觉系统,也是当前最具代表性的具身视觉技术之一。它有机融合深度强化学习&…

阅读更多 →
具身智能协同演化动力学(4):语义认知优势与物理交互幻觉的底层矛盾 2026/9/28 3:34:38

具身智能协同演化动力学(4):语义认知优势与物理交互幻觉的底层矛盾

前沿技术探索:TVA智能体(简称TVA)TVA智能体(亦称“AI智能体视觉”)是依托Transformer架构与“因式智能体”理论构建的新型工业视觉系统,也是当前最具代表性的具身视觉技术之一。它有机融合深度强化学习&…

阅读更多 →
CoCoTen: Detecting Adversarial Inputs to Large Language Models through Latent Space Features of C... 2026/9/28 3:34:38

CoCoTen: Detecting Adversarial Inputs to Large Language Models through Latent Space Features of C...

文章主要内容和创新点 主要内容 本文针对大型语言模型(LLMs)易受越狱攻击(通过精心设计的提示词绕过安全协议,生成有害内容)的问题,提出了一种基于上下文共现张量潜在空间特征的检测方法——CoCoTen。该方法通过以下步骤实现检测: 构建上下文共现矩阵:对输入提示词,…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉