处理MDK中Not enough information to list image symbols.错误方法

文章讲述了作者在使用STM32模板创建时遇到编译错误,原因是未包含RCC固件库。通过检查配置和添加相应库函数,解决了问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天在进行stm32模板创建的时候遇到一个这样的问题具体报错如下图:

编译过程中提示:Not enough information to list image symbols.与Not enough information to list load addresses in the image map.

第一时间我检查了相关配置发现文件都已添加进去,后面检查发现缺少了rcc的固件库文件

将rcc固件库文件添加进去编译成功

故障原因为:没有将相应的库函数包含进去。

### Keil 5 编译错误解决方案 在使用 Keil 5 进行嵌入式开发时,可能会遇到类似于 `L6235E` 的链接器错误。这些错误通常表明链接脚本中的某些配置不正确或缺失必要的信息[^1]。 #### 错误分析 - **Error L6235E**: 表明多个部分匹配选择器条件,而无法全部标记为 `FIRST` 或 `LAST`。这通常是由于链接脚本未正确定义优先级或顺序引起的。 - **Not enough information to list image symbols/load addresses in the image map**: 链接器未能找到足够的信息来生成符号表或加载地址列表。这种问题可能源于缺少 `.map` 文件的启用或者链接脚本定义不当。 #### 解决方案 ##### 启用 MAP 文件生成 MAP 文件提供了程序中所有符号及其对应内存位置的信息。如果该选项未被激活,则可能导致上述错误。可以通过以下方式开启: 1. 打开项目设置窗口,在菜单栏依次点击 `Project -> Options for Target...`. 2. 转到 `Output` 标签页。 3. 勾选 `Create HEX File` 和 `Create Map File` 复选框。 通过此操作可以确保链接阶段生成完整的符号映射文件和加载地址信息。 ##### 修改 Linker Script (scatter file) 有时默认的 scatter 文件不足以满足复杂项目的需要。以下是调整方法的一个例子: ```c LR_IROM1 0x08000000 0x000C0000 { ; load region size_region ER_IROM1 0x08000000 0x000C0000 { ; exec region size_region *.o (RESET, +First) ; 定位重置向量至起始处 *(InRoot$$Sections) ; 添加根节区段 .ANY (+RO) ; 只读数据放置在此区域 } RW_IRAM1 0x20000000 0x00020000 { ; RAM 地址范围 .ANY (+RW +ZI) ; 可写/零初始化变量存储在这里 } } ``` 这段代码片段展示了如何精确指定各模块的位置以及它们之间的相对关系。特别注意的是 `(RESET,+First)` 参数的应用——它强制将复位处理函数安排在闪存开头。 ##### 清理并重新构建工程 即使解决了根本原因之后,旧的目标文件仍可能干扰新版本的成功编译。因此建议执行一次彻底清理再重建整个工程项目。 ```python # 使用命令行工具清除残留物后再尝试再次编译 keil_project.clean() keil_project.rebuild_all_targets() ``` 以上措施应该能够有效缓解乃至完全消除所提到类型的连接期异常状况。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值