Keil 编译太慢怎么办?教你一招,提速10倍

收集整理了一份《2024年最新物联网嵌入式全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升的朋友。
img
img

如果你需要这些资料,可以戳这里获取

需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人

都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

f39164b1071191aa19c4c55b69488bcb.png
可以看到,在这里我用了3分钟。这个时间太长了,会大大影响我的开发效率,所以后面尝试了几个方法,提高构建的速度。

2. 解决方案

首先我找到一个解决办法就是在构建过程中防止生成 Browse Information 文件。

d2f09072834621cedb69fb3a0ce1faaa.png

配置

想要在项目配置中将这个选项勾选去掉即可,最终实践发现,项目构建时间缩短到 24秒 ,整体还可以接受。

6bbef5655c4daa499b17a7c28630829e.png

优化后的时间

主要原因其实是构建的时候,避免生成 .CRF 文件,生成这个文件的主要作用就是我们在进行代码编辑的时候,宏定义,函数原型,函数声明可以进行跳转。

947ce0021e2eacdccb3c05cd8f688654.png

CRF

官方文档中的解释:Cross-Reference file containing browse information (definitions, references for identifiers).

如果选择不生成这个文件,代价就是牺牲了我们写代码的效率

因为我们写代码的时候,会频繁地进行函数原型和函数声明直接的跳转,有时候要跳转到宏定义,如果无法进行跳转,使用Keil MDK只能使用全文搜索来替代,因此一定程度上会降低效率。

ed4a6f4ccd3bb36652afde2897ff5639.png

进行跳转

当我们尝试跳转到函数声明时,最终提示如下:

02bb38e4c7ac91fbffe664097a66859a.png

错误提示

这时候,我喜欢配合其他编辑器,比如source insightvs code,代码编辑的工作放在其他体验更好的软件中进行,然后代码的构建和调试又重新回到keil mdk,发挥各自的优势。

之前写过一篇使用EIDE的插件,在vs code中导入keil mdk的项目进行开发,在vs code中调用arm cc进行项目的构建。

b4096dc313d79183a05af393a233e301.png

EIDE在VSCODE中的构建时间

整体的构建时间为 30秒 ,可以接受,然后还能充分发挥vs code在代码编辑上的优势,感兴趣的可以试一下。

3. 总结

今天的介绍的挺简单,主要是在keil mdk下开发,构建项目时会产生.CRF文件,从而使构建速度大大降低,从而影响开发效率。

具体的解决办法是避免生成.CRF文件,但是会影响整体函数原型和声明以及宏定义的跳转,可以通过全文搜索,或者借助其他编辑器作为辅助手段来解决。

img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新

需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)

如果你需要这些资料,可以戳这里获取

些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)**

如果你需要这些资料,可以戳这里获取

<think>好的,我现在需要帮用户解决Keil编译报错的问题。首先,用户提到的是编译错误,但没有具体说明错误类型,所以我需要覆盖常见的报错情况,并参考提供的引用资料。 首先,引用[3]提到了MAIN.C: error C100: unprintable character skipped,这是由于中文空格导致的。这可能是一个常见问题,特别是用户可能在代码中不小心输入了中文字符或符号。需要检查代码中的空格和标点是否都是英文状态下的。 然后,引用[4]提到编译速度和文件找不到的问题,这可能与系统路径中的中文字符有关。用户如果新换了电脑,并且账户名是中文的,环境变量路径包含中文会导致Keil无法正确读取文件,从而报错。这时候建议用户创建英文账户,避免路径问题。 引用[1]和[2]讨论了升级MDK后的兼容性问题,可能需要检查编译器版本是否过旧,或者项目设置是否正确。比如,升级后可能需要更换编译器为ARM Compiler 6,或者调整项目配置中的目标选项。 接下来,我需要将这些引用中的解决方案整理成步骤,让用户逐步排查。首先检查代码中的中文字符,特别是空格和标点。然后查看错误信息,如果是文件找不到,考虑路径问题,建议检查系统账户名是否为中文,必要时创建英文账户。如果是升级后的错误,需要调整编译器版本或更新设备库。 另外,常见的问题还有头文件路径未正确设置,或者文件权限不足,这些也需要包含在解决方案中。比如,用户可能没有正确添加头文件路径,或者工程文件被设置为只读,导致编译失败。 最后,需要提醒用户具体错误信息的重要性,因为不同错误有不同的解决方法。建议用户根据具体的错误提示来针对性处理,如果问题依然存在,再进一步分析。</think>### Keil编译报错解决方案分步指南 #### 一、中文字符/符号导致的错误(最常见) 1. **错误示例**:`MAIN.C: error C100: unprintable character skipped` 2. **解决方法**: - 使用快捷键`Ctrl+F`搜索代码中的中文标点(特别是逗号、分号、括号) - 检查所有空格是否为英文半角状态(中文全角空格会显示为异常字符)[^3] - 推荐操作:在Keil中启用`View->White Space`显示空格字符 #### 二、系统环境问题(新电脑常见) 1. **错误现象**: - 编译速度极(超过10分钟) - `Could not open file...`类报错 2. **根本原因**: Windows系统用户名含中文,导致环境变量路径异常[^4] 3. **解决方案**: ```markdown 1. 新建英文用户账户(控制面板->用户账户) 2. 迁移工程文件到新账户目录 3. 卸载原Keil后在新账户下重新安装 ``` #### 三、MDK升级后的兼容性问题 1. **典型错误**: - `Undefined symbol __asm...` - `Device not found` 2. **处理步骤**: - 检查项目配置:`Project->Options for Target->Target` - 切换编译器版本(ARM Compiler V5/V6切换) - 更新设备支持包:`Pack Installer`图标->检查芯片厂商更新[^1][^2] #### 四、文件路径相关错误 1. **预防措施**: - 确保工程路径全英文(包括父目录) - 路径层级不超过3层(例:`D:\Project\STM32\LED`) 2. **头文件缺失处理**: ```markdown 1. 右键点击报错的头文件->Options 2. 在C/C++选项卡添加正确包含路径 3. 勾选`Always rebuild`后全编译 ``` #### 五、其他高频问题速查表 | 错误类型 | 特征代码 | 解决方案 | |---------|---------|---------| | 链接错误 | L6047/L6220 | 检查启动文件与芯片型号匹配 | | 语法错误 | C205/C402 | 使用`Edit->Advanced->Convert Encoding`转码为UTF-8 | | 权限问题 | TOOLS.INI | 以管理员身份运行Keil |
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值