More than one section matches selector - cannot all be FIRST/LAST的解决方法(包含只有一个启动文件的解决方法)

在用keil编译工程的时候突然报错,出现这个错误可能是存在以下两种问题:
问题一:
在这里插入图片描述
此项目添加了多个启动问文件,例如:startup_stm32f103x_hd.s、startup_stm32f103x_md.s、startup_stm32f103x_ld.s等,如果项目存在多个启动文件,应该只保留对应芯片容量的启动文件。
startup_stm32f10x_hd.s 大容量的STM32F101xx,STM32F102xx,STM32F103xx
startup_stm32f10x_hd_vl.s 大容量的STM32F100xx
startup_stm32f10x_ld.s 小容量的STM32F101xx,STM32F102xx,STM32F103xx
startup_stm32f10x_ld_vl.s 小容量的STM32F100xx
startup_stm32f10x_md.s 中容量的STM32F101xx,STM32F102xx,STM32F103xx
startup_stm32f10x_md_vl.s 中容量的STM32F100xx
startup_stm32f10x_xl.s 超大容量FLASH在512K到1024K字节的STM32F101xx,STM32F102xx,STM32F103xx
解决方法:根据上方的提示只保留对应的启动文件,删除多于的启动文件,重新编译即可。

问题二:
如果项目里只存在一个且与芯片对应的启动文件,那就是建立工程模板时勾选了相应的选项,如下图所示。
在这里插入图片描述
这就表明项目模板已经包含启动文件和库文件。
解决方法:
将下图两个文件移除,然后重新编译。
在这里插入图片描述
或者右键CMSIS和Device选择第一项(Options ···)单击CMSIS和Device再点击左下角Remove,重新编译即可。

  • 9
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
### 回答1: 这是一个错误提示,意思是在文件".\objects\project.sct"的第7行出现了一个错误,错误类型是"l6235e",提示信息是"more than one section matches selector - cannot all be first/last",意思是有多个段与选择器匹配,不能全部作为第一个或最后一个。 ### 回答2: 这个错误信息是在编译过程中出现的。错误的原因是有多个段符合了选择器,但不能都作为第一个或最后一个段。 这个错误通常与链接器有关,因为链接器是用来将所有目标文件合并为一个可执行文件的。在合并的过程中,链接器需要根据不同段的特征来分配内存地址。在分配内存地址时,如果存在多个段与选择器相匹配,那么就会导致错误的出现。 要解决这个问题,我们需要找到是哪些段和选择器相匹配,然后对它们进行调整。可以通过以下几种方法解决: 1. 检查源代码并进行适当的修改。有些情况下,可以通过修改源代码来消除冲突。例如,可以将变量、函数或代码放在不同的段中,以便让链接器找到唯一的匹配段。 2. 检查链接文件并进行适当的修改。有些情况下,冲突可能是由于链接文件中的一些错误或错误设置造成的。例如,可以检查链接文件并查看段的设置,以便确定哪些段需要重新分配内存地址。 3. 重新编译项目。有时候,重新编译整个项目可能是解决这个问题的最佳方法。重新编译可能会清除一些错误,并帮助系统重新确定段的设置。 总之,这个错误的解决方法可能因情况而异,但如果按照上述方法操作,则可以最大程度地减少错误出现的可能性。 ### 回答3: 这个错误是在使用Keil MDK进行嵌入式开发时出现的。它的意思是,在项目的配置文件中存在多个段匹配了同一个选择器,而这些段又都被设定为需要排在所有段的最前面或者最后面,这样就无法确定它们的顺序,从而导致了错误。 一般来说,这个错误会出现在由于开发者在代码中使用了特殊的属性或者标示,从而出现了多个段共用同一个选择器的情况下。解决这个错误的方法是在项目配置文件中修改这些段的设定,比如改变它们的顺序或者设定不同的选择器等。 具体来说,可以尝试按照开发工具的指导,将这些段的顺序设为唯一的,并为各段设置不同的选择器,这样可以确保每个段都有固定的位置,并且不会出现互相冲突的情况。此外,也可以通过更改段的参数来解决这个问题,比如修改段的内容、大小或者访问属性等。 总之,解决这个错误需要对嵌入式系统的框架有一定的了解,以及对项目的配置文件有深入的理解。只有这样才能对错误进行有效的排查和修复,保证项目能够按照预期运行。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值