[其他ST产品] 更新了IDE后,项目无法编译

[复制链接]
521|5
柴库柴库 发表于 2025-9-3 03:34 | 显示全部楼层 |阅读模式
一个项目使用RTOS和LWIP。今天我更新了IDE后,项目无法编译,出现以下错误:errno被多次声明。实际上我项目中errno只声明了一次。即使我使用CubeMX创建一个包含RTOS和LWIP的项目,也会出现同样的错误。如果我在sys_arch.c中注释掉它,错误就会消失。

c:\st\stm32cubeide_1.3.0\stm32cubeide\plugins\com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127\tools\arm-none-eabi\bin\ld.exe: c:/st/stm32cubeide_1.3.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-reent.o):(.bss.errno+0x0): multiple definition of `errno'; ./Middlewares/Third_Party/LwIP/system/OS/sys_arch.o:C:/Software/Firmware/EtherNetTest/Debug/../Middlewares/Third_Party/LwIP/system/OS/sys_arch.c:45: first defined here

collect2.exe: error: ld returned 1 exit status

有没有LWIP代码的解决方法?

flycamelaaa 发表于 2025-9-4 17:15 | 显示全部楼层
修改LWIP的sys_arch.c。LWIP的sys_arch.c中通常会通过宏控制是否定义errno。如果未正确配置,可能导致重复定义。
classroom 发表于 2025-9-4 19:16 | 显示全部楼层
配置Newlib-nano不提供errno,Newlib-nano的errno定义可以通过链接器选项禁用。
duo点 发表于 2025-9-4 19:17 | 显示全部楼层
升级STM32CubeIDE至最新版本。
flycamelaaa 发表于 2025-9-4 22:17 | 显示全部楼层
降级工具链试试。
onlycook 发表于 2025-9-4 22:18 | 显示全部楼层
统一使用Newlib的__errno机制,但需修改较多代码。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

61

主题

81

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部