别再全网求安装包了!手把手教你从Arm官网正确下载Arm Compiler 5.06
做嵌入式开发的老哥们应该都体会过这种绝望:手头维护着一个三五年前的MCU项目,代码工程一切正常,结果换了台新电脑,装上最新版Keil MDK一编译,直接给你报一屏幕的错误。原因基本不用猜,工程里用的是ARM Compiler 5(AC5),而新版Keil默认已经换成AC6了,语法检查严格了不少,老代码在AC6底下大概率要爆雷。
这时候你想把AC5找回来,习惯性打开百度搜“Arm Compiler 5.06 下载”,出来的全是各种论坛、网盘的搬运帖。说实话,那些包的来历不明不白,里面有没有被塞东西真不好说,而且版本还经常对不上。我自己就吃过一次亏,下了一个号称5.06 update 6的“绿色版”,装完编译出来的固件跑起来直接HardFault,排查了整整一下午,最后发现是编译器本身有问题。从那以后我再也不敢用第三方打包的编译器了,宁愿多花点时间在官网走正规流程。
这篇就把我整理好的下载流程分享出来,包括Arm官网的准确入口、账号注册的坑、那个动不动就“跳转卡死”的问题怎么解决,以及装完之后怎么确认版本、怎么在MDK里正确切换。
1. 为什么必须用Arm Compiler 5.06,这个版本到底特殊在哪
1.1 MDK的“编译器之谜”:AC5和AC6的差别不是一点点
很多新手可能没搞明白,Keil MDK里那个编译器并不是Keil自己做的。从MDK 5.37版本之后,Arm Compiler 5被移出了默认安装包,只有装完MDK之后再去单独补一个叫“Legacy Support”的兼容包,才能找回AC5。这个Legacy Support包本质上就是Arm官方提供的向下兼容方案,里面包含了ARMCC 5.06的完整工具链。
AC5和AC6的核心区别在于:AC5用的是ARMCC编译器,遵循的是C90/C++03那一套老标准,对语法要求相对宽松;而AC6换成了基于LLVM的Clang编译器,对语法检查严格得多,尤其是指针类型转换、隐式类型转换这些,稍微不规范就直接error。老工程很多都是用了十几年的代码库,在AC6下编译出来的错误信息能刷几屏,其中大部分根本不是真正的语法错误,而是老代码里那些“约定俗成”的写法AC6不认了。
所以对于老项目维护、芯片原厂老SDK移植、或者那些必须用ARMCC 5的第三方库,老老实实用AC5才是最高效的选择。AC5.06是AC5系列的最终版本,后续Arm不会再对AC5做任何功能更新,而常见的update版本中update 7(build 960)基本上就是最后一版,稳定性和兼容性自然是最好的。
1.2 版本号“5.06 update 7 (build 960)”到底代表什么
经常看到有人在论坛问版本号的问题,这里顺便把Arm的命名规则说清楚。Arm Compiler 5的完整版本号一般长这样:5.06 update 7 (build 960)。
5.06是主版本号,代表这是AC5系列的6次大更新后的状态;update 7表示在这个主版本上又做了7次维护性更新,每次update都会修复一些bug或者增加对个别新芯片的支持;build 960是编译器的内部构建号,相当于源码仓库里某个具体的发布节点。
实际使用中,5.06 update 3、update 5、update 7这些版本之间,生成的代码质量和兼容性差异并不大,但update 7修复了一些在Windows新版本下运行异常的问题。所以如果你现在要装新环境,直接上update 7 build 960是最省心的选择,这也是标题里为什么专门点出这个版本号的原因。
注意:AC5.06 update 7这个版本对Windows 10/11的兼容性相对较好,但个别杀毒软件(比如360)会误报armcc.exe为风险程序,安装时记得加白名单,否则编译器可能被静默隔离,到时候编译直接报“找不到armcc”就很冤枉了。
2. 下载入口准确位置:别再用搜索引擎碰运气了
2.1 Arm官网的产品下载中心经历了大变样
Arm官网这几年改版了好几次,老入口经常失效,这就是为什么很多人照着旧教程找不到下载按钮。目前(我实测是这篇文章写的时候)正确的路径是:
- 浏览器打开Arm官网,顶部导航找到Developer,在下拉菜单里选择Resources,然后再点Download Center;
- 进入Download Center后,左侧会有分类筛选,找到Compiler分类下的Arm Compiler for Embedded;
- 进入Arm Compiler for Embedded的详情页后,移动端和桌面端的页面布局略有不同,但都能看到一个Downloads或Download Previous Versions的按钮;
- 这里要注意:页面上默认展示的是最新的Arm Compiler 6.x版本下载,AC5并没有出现在显眼位置。你需要往下翻,找到类似Legacy Software或者Arm Compiler 5 for Keil的入口。
如果用这个路径进去还是找不到,还有一个更直接的方式:直接在官网站内搜索框输入“Arm Compiler 5.06”,搜索结果中会直接出现对应产品页面。这个方法甚至比一级级点菜单更快。
我个人的经验是,尽量用Chrome或Edge浏览器操作,不要在微信内置浏览器或者某些国产浏览器里做注册和下载,后面会提到,那些浏览器很容易把Arm官网的登录态搞丢,导致跳转死循环。
2.2 为什么必须登录才能下载,以及需要什么类型的账号
Arm官网的下载权限和账号体系绑定,AC5.06不是完全对所有人开放的。你需要一个Arm Developer账号(个人免费注册),注册并登录后才有下载权限。
这里有几个值得留意的细节:
- 如果你之前注册过Arm官网的账号(比如为了下载CMSIS、或者用过Arm自家的mbed平台),这些账号是通用的,不需要重新注册;
- 有些老的Arm账号是关联到公司邮箱的,如果你已经离开原公司了,建议用个人邮箱重新注册一个,避免后续收验证邮件或找回密码时有问题;
- Arm官网的账号系统偶尔会和中国大陆地区的邮箱服务商(比如QQ邮箱、163邮箱)出现邮件延迟的情况,验证邮件可能等十几分钟才到,这是正常现象,不用反复点“重新发送验证邮件”,每次点都会重置延迟时间。
2.3 正确的下载流程全景图
把完整流程提前摆出来,避免你走到一半才发现前面有坑。整个下载过程分四个阶段:
第一阶段:注册并激活账号。填写邮箱、设置密码、接收激活邮件并点击链接。第二阶段:注册产品。在AC5.06的下载页面,你需要先点击“Get Software”或“Download”按钮,系统会要求你选择这个产品要用于什么目的(个人评估/商业项目等),填写之后才算解锁下载按钮。第三阶段:填写下载申请表。这一步很多人会被吓到,Arm会让你填一个偏长的表单,包括姓名、公司、使用场景等。别慌,大部分内容随便填就行,注意邮箱必须填注册用的那个。第四阶段:进入真实下载链接。填写完申请表并提交后,页面会跳出一个直接的下载链接,同时Arm也会把下载链接发到你邮箱。点击链接即可下载。
这里最坑的地方在于,第二阶段和第三阶段之间经常会出现“注册跳转”问题,网页一直转圈或者跳回首页,导致整个流程卡住。这个问题太常见了,单独拿出来讲。
3. 注册跳转问题:90%的人卡在这一步,完整解决方案在这里
3.1 注册跳转失败的根本原因
这个“注册跳转”问题,我在网上查的时候发现大量相关提问,但是没有任何一个回答真正说清楚了原因。我自己在不同电脑、不同网络环境下反复测试了好几遍,基本可以确认根本原因有两个:
第一个是浏览器Cookie和会话状态丢失。Arm官网的账号系统和产品下载系统其实是两套不同的子站,逻辑上它们通过浏览器Cookie共享登录状态。当你登录成功后跳转到产品下载页时,如果浏览器拦截了第三方Cookie,或者Cookie的有效期设置比较短,页面就会误判你“未登录”,把你弹回登录页。你重新登录后又跳转过去,结果还是未登录,就形成了死循环。
第二个是跨域跳转时的Referrer校验。Arm官网对下载请求进行了Referrer校验——简单说,服务器会检查你是从哪个页面点过来的,如果来源页面不合法,就拒绝受理。而国内的某些网络环境中,中间代理或者浏览器插件可能会修改这个来源信息,导致校验失败。
3.2 常见解决思路,我实测来判断哪种有效
网上对这个问题的解决办法五花八门,我全部试过一遍,这里直接给结论:
换浏览器是有效的。从360浏览器换到Chrome或Edge后,问题大概率会消失。原因就是Chrome和Edge的Cookie管理策略比较标准,不容易误伤Arm官网的跨域Cookie。
开无痕模式有时候有效。无痕模式下没有历史残留Cookie干扰,但如果你在无痕模式下登录后打开了下载页面又关闭浏览器,那下次还得重新登录,比较麻烦。所以我建议普通模式下换个浏览器即可,不必特意开无痕。
清除浏览器缓存和Cookie再试,这个反而效果一般。因为问题根源是跳转过程中新写的Cookie没被正确处理,旧Cookie清除并不能解决问题。
用手机热点代替宽带,对部分用户有效。如果你家里的网络有特殊的DNS设置,换成手机热点相当于换了一条网络路径,绕开了中间环节。这个方法我推荐作为备选方案尝试。
3.3 终极方案:直接通过官方邮件链接完成下载
如果换浏览器、换网络都还是卡在注册跳转,别跟它死磕,还有一个几乎不会失败的方案:
Arm的下载权限审核通过后,系统会自动给你注册邮箱发一封邮件,邮件模板大致是“Your Arm Compiler 5.06 download link is ready”。邮件里会包含专属下载链接,直接点这个链接就能下载,完全不用经过网页的跳转流程。
关键问题是前面要“审核通过”,它凭什么给你通过?这就回到了刚才说的填表环节。在AC5.06的下载页面,你把那个详情表单填完并提交后,不管页面有没有正常跳转,后台审核流程实际上已经启动了。只要你的信息填得合理(如实填写使用场景,比如“用于嵌入式产品固件维护”),通常几分钟到几个小时内,下载链接邮件就会发到邮箱。
如果填完半天都没收到邮件,看看垃圾箱。Arm发出的邮件发件人是no-reply@arm.com或类似地址,有时候会被邮箱服务商误判为营销邮件。
注意:整个过程中,唯一不能省略和随便填的就是注册邮箱,因为下载链接只会发到这个邮箱。其他如公司名、电话之类,如果只是个人学习用途,如实填写个人用户即可,Arm不会专门打电话核实。
4. 正式下载与安装校验:拿到正确的安装包
4.1 下载什么样的文件,别拿错了
通过邮件链接下载到的是一个普通的Windows可执行安装包,文件名一般是这样的格式:
Arm_Compiler_5.06u7_Windows.zip这个包的大小差不多在70MB到100MB之间,如果你在非官方渠道看到只有几MB的“精简版”,直接放弃,那基本可以断定不完整。下载下来后先别急着双击,把文件属性打开看一眼数字签名,签名信息应该是Arm Limited,如果不是,说明传输过程中文件被篡改或者下载到的根本就是恶意程序。
顺带说一句,如果你要在Linux环境下做开发,Arm也提供了Linux版本,文件名类似Arm_Compiler_5.06u7_Linux_x86_64.zip,安装和Windows略有差异,大多数用Keil MDK的嵌入式开发者用Windows版就够了。
4.2 安装过程中最容易被忽略的目录选择问题
双击安装包,默认会装到类似这样的目录:
C:\Users\你的用户名\AppData\Local\Arm\Arm Compiler 5.06这个路径本身没啥问题,但如果你后面要在Keil MDK里手动添加编译器路径,那一长串路径就挺麻烦的。我建议在安装的时候手动把安装目录改成:
C:\Keil_v5\ARM\ARMCC这样做的直接好处是,你以后重装系统或者换电脑时,整个Keil目录可以直接复制迁移,编译器的路径不用重新配。另外一个隐藏好处是,Keil的某些插件会把编译器路径写死到工程文件里,路径越短、越不容易踩“路径长度超过255字符”的Windows限制。
安装过程是全图形界面,一路Next就行,注意不要勾选“Install as portable”这种选项(如果你看到的话),否则后续在命令行里调用armcc时可能会出一些奇怪的权限问题。
4.3 安装后怎么验证版本确实正确
装完别急着打开Keil,先在命令行里验证一下编译器是否正常工作。按下Win+R,输入cmd,进入命令行,执行以下命令:
cd /d C:\Keil_v5\ARM\ARMCC\bin armcc --version如果一切正常,你会看到类似这样的输出:
Product: ARM Compiler 5.06 Component: ARM Compiler 5.06 update 7 (build 960) Tool: armcc [4d35a6]注意看第二行,必须明确显示update 7 (build 960),这样才是完整的AC5.06u7。如果只显示5.06而没有update版本信息,说明你下载的可能是旧版或者精简版,建议重新下载。
如果执行命令后提示“armcc不是内部或外部命令”,说明bin目录不在环境变量里。这倒不影响Keil MDK使用它,但会影响命令行编译调试,建议手动把C:\Keil_v5\ARM\ARMCC\bin添加到系统Path环境变量,一劳永逸。
4.4 Keil MDK里如何切换编译器和版本
装好AC5.06之后,在Keil MDK的工程里把它设置成当前编译器,步骤非常关键:
- 打开Keil MDK,加载你的工程;
- 点击菜单栏的Project→Manage→Project Items;
- 切到Folders/Extensions标签页;
- 下方会有一个Default File Paths区域,确认ARMCC路径是否正确指向你刚安装的目录;
- 回到工程界面,点击工具栏上的魔术棒(Options for Target),在Target标签页最下方找到ARM Compiler下拉框;
- 在下拉框里选择
Use default compiler version 5或者直接指定你刚才安装的ARM Compiler 5.06。
选择完成后,重新编译工程。编译日志输出的编译器信息处会显示:
Copyright (C) 2010-2018 ARM Limited or its affiliates. All rights reserved. ARM Compiler 5.06 update 7 (build 960)看到这行,说明你的工程确实在用AC5编译了。这里要特别提醒,如果你同时装了多个版本的Arm Compiler,比如AC5.06和AC6.18,MDK的编译器下拉框里都能看到,你需要在每个工程里分别指定,这个设置是跟随工程的,不是全局的。
5. 常见问题与排查技巧实录
5.1 注册跳转问题的对应解答速查表
这节直接总结成表格,方便遇到问题时对着查。
| 症状 | 可能原因 | 解决方案 |
|---|---|---|
| 登录后点击下载按钮,页面跳回登录页 | Cookie跨域丢失 | 换Chrome/Edge浏览器,确认未拦截第三方Cookie |
| 填写完申请表后一直转圈 | 网络代理/插件修改Referrer | 切换手机热点,或直接等邮件里的下载链接 |
| 下载链接打不开,提示404 | 链接失效(邮件链接通常7天有效) | 重新登录官网,再次进入产品页获取新链接 |
| 激活邮件一直收不到 | 邮箱服务商拦截或延迟 | 检查垃圾箱、广告邮件,等待15分钟后重试 |
| 下载速度极慢,几十KB每秒 | 国内访问境外服务器波动 | 使用支持断点续传的下载工具,不要中断下载 |
5.2 安装了Legacy Support但MDK依然报编译器缺失
这是第二个高频问题。明明已经装了Legacy Support,打开老工程后MDK还是提示“Compiler version 5 not found”。这个问题我遇到过不下三次,原因也很坑:Legacy Support装完之后,MDK默认的编译器路径没有自动更新。
解决方法是打开Keil MDK,进入Project→Manage→Project Items→Folders/Extensions,手动检查ARMCC的路径是否指向了你安装的AC5目录。如果里面是空的或者还是指向旧路径,手动填上C:\Keil_v5\ARM\ARMCC,重启Keil即可。
提示:Legacy Support的安装包在MDK的安装目录下可以找到,通常在
C:\Keil_v5\ARM\Legacy_Support.exe。如果你重装了MDK,记得把这个也重新装一遍,旧版本不会自动保留。
5.3 从第三方安装包迁移源码引起的编译器版本错乱
聊个我自己踩过的坑。有些朋友以前是从别人网盘分享的MDK整合包入的门,那个包自带AC5,但版本可能是5.06 update 3甚至更早。你后来正儿八经通过官网安装了AC5.06u7之后,打开老工程时发现工程的编译器选项里有两个AC5选项,一个update 3,一个update 7。这个时候就需要在魔术棒里手动选择update 7,并且建议把编译输出目录清理一下(勾选魔术棒里的“Delete the object files before rebuil”选项,或者删掉工程的Listings和Objects文件夹),否则可能会出现新旧编译器产生的中间文件冲突,编译链接时出现各种莫名奇妙的重定义错误。
5.4 再分享一个最后的小技巧
如果你用的是企业电脑,公司网络和安全策略比较严格,Arm官网的登录跳转可能被判定为风险行为。这种情况下试试用手机浏览器完成整个注册和下载流程,下载好的安装包再传回电脑上安装。手机浏览器的跨域Cookie策略和PC浏览器不太一样,有时候效果反而更好。另外,如果孵化器或公司IT管理员给电脑开了“屏幕保护锁定”之类的策略,安装过程中弹出UAC权限提示时一定要点“是”,否则安装程序会在后台卡住,看起来像是下载了坏包。
6. 写在最后:我的实操体验
AC5.06下载这件事,本质上不难,但被Arm的官网机制搞得流程比较绕,尤其是中间那个“注册跳转”问题,会劝退很多人,最后只能到处找第三方安装包。我写这篇的目的,就是希望你直接避开那些坑,一次性走通官方流程。
我个人在实际操作中最大的感受是:Arm官网的下载机制虽然繁琐,但它对文件完整性的保障确实靠谱。官网下载的AC5.06,安装后编译出来的固件,在产线上跑了几百台设备,没有出现过一次因为编译器导致的异常。如果你问我值得花这个时间在官网折腾吗?我的回答是:值得,稳定用的东西,就得从靠谱的源头拿。
最后还想提醒一句——如果你下载AC5.06只是为了临时编译一次老工程,以后大概率不会再碰这种老工具链,那其实可以考虑直接用Keil MDK安装目录里自带的Legacy Support,不需要单独下载安装AC5。但只要你打算长期维护老的嵌入式项目,或者要处理多套历史工程,还是老老实实装一份完整的AC5.06u7,省心。