Keil编译错误:L6236E: No section matches selector - no section的解决方法

本博客详细记录了解决STM32项目编译时遇到的Nosectionmatchesselector-nosection错误的过程,包括问题定位、解决方案及实际操作步骤,帮助开发者避免类似问题,提升编程效率。

    第一次写博客,为的是自己可以做个笔记或总结什么的,二来是或许可以帮到更多有需要的朋友,写得不好,不要见怪哈,呵呵...


    做项目写了个小工程,编译时出现如题所示的错误(L6236E: No section matches selector - no section),在网上百度了一下,有人说是启动文件的问题,所以查看了一下自己的工程,的确是:我用的的是中等密度的cpu,但在创建新工程时自动添加的时高密度的cpu启动文件(startup_stm32f10x_hd.s),将其改为startup_stm32f10x_md.s后依然不行,继续百度找到了解决的方法。如下图所示:将"system_stm32f10x.c"的"include in TargetBuild"属性前面那个小灰勾点成黑色,编译通过!!

   感谢阅读,希望对您有用。

Keil5编译报错L6236E(No section matches selector - no section to be FIRST/LAST)且错误位置在407111\407111.sct(7)时,可尝试以下解决办法: ### 检查节选择器 确认407111.sct文件第7行中的节选择器是否正确。节选择器用于指定要包含在特定内存区域的节,常见的节选择器有 `.text`、`.data`、`.bss` 等。要确保选择器与代码中实际存在的节名称一致。例如: ```plaintext ; 示例:正确的节选择器 LR_IROM1 0x08000000 0x00100000 { ; load region size_region ER_IROM1 0x08000000 0x00100000 { ; load address = execution address *.o (RESET, +First) *(InRoot$$Sections) .ANY (+RO) } RW_IRAM1 0x20000000 0x00020000 { ; RW data .ANY (+RW +ZI) } } ``` ### 检查代码生成的节 确保代码中生成了与选择器匹配的节。有时候,编译器或链接器的配置可能会导致某些节没有被正确生成。可以通过查看编译输出或使用工具(如 `objdump`)来检查生成的目标文件中包含的节。 ```bash # 使用objdump查看目标文件的节信息 arm-none-eabi-objdump -h your_object_file.o ``` ### 检查链接器配置 确认链接器的配置是否正确。有时候,链接器可能被配置为忽略某些节或不生成特定的节。检查编译器和链接器的命令行选项,确保没有意外的配置。 ### 检查目标文件是否正确生成 确保所有的目标文件都被正确生成,并且没有编译错误。如果有编译错误,可能会导致某些节没有被正确生成。重新编译所有源文件,确保没有错误。 ### 示例代码修改 假设407111.sct文件第7行是一个错误的节选择器,例如: ```plaintext ; 错误的节选择器 *.o (NON_EXISTENT_SECTION, +First) ``` 可以将其修改为正确的节选择器,例如: ```plaintext ; 正确的节选择器 *.o (RESET, +First) ``` ### 检查库文件 如果项目中使用了库文件,确保库文件中包含与选择器匹配的节。有时候,库文件的版本或配置可能会导致节不匹配。 ### 调试输出 在链接器脚本中添加调试输出,查看链接器的处理过程。可以在脚本中添加注释或打印信息,帮助定位问题。 ```plaintext ; 添加调试信息 ; Debug: Checking for sections LR_IROM1 0x08000000 0x00100000 { ; load region size_region ER_IROM1 0x08000000 0x00100000 { ; load address = execution address *.o (RESET, +First) *(InRoot$$Sections) .ANY (+RO) } RW_IRAM1 0x20000000 0x00020000 { ; RW data .ANY (+RW +ZI) } } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值