[STM32F0] STM32CubeIDE 从 GCC 9 切换到 GCC 10 后出现链接器错误。

[复制链接]
103|13
内核558 发表于 2025-11-5 14:43 | 显示全部楼层 |阅读模式
我将工具链从之前一直正常工作的 “GNU Tools for STM32 (9-2020-q2-update)” 切换到较新的 “GNU Tools for STM32 (10.3-2021.10)” 时,出现了一些链接器错误。完全相同的代码在旧工具链上能正常编译,但在新工具链上会抛出这些错误。
控制台输出:
23:30:06 **** Incremental Build of configuration Debug for project STM32F030F4P6 ****
make -j24 all
arm-none-eabi-g++ -o "STM32F030F4P6.elf" @"objects.list" -lstm32f030f4p6 -lcmos0 -mcpu=cortex-m0 -T"C:\Users\Admin\Desktop\Projekte\Embedded\Dev Board STM32F030F4P6\Software\STM32F030F4P6\STM32F030F4P6 Dev Board Linker Script.ld" --specs=nosys.specs -Wl,-Map="STM32F030F4P6.map" -Wl,--gc-sections -nostartfiles -nodefaultlibs -nostdlib -static -L"C:\Users\Admin\Desktop\Projekte\Embedded\DeviceDriver\STM32F030F4P6\API\Lib" -L"C:\Users\Admin\Desktop\Projekte\Embedded\CMOS\API\Lib" --specs=nano.specs -mfloat-abi=soft -mthumb -Wl,--start-group -lc -lm -lstdc++ -lsupc++ -Wl,--end-group


classroom 发表于 2025-11-5 15:22 | 显示全部楼层
旧工具链生成的库可能与新工具链不兼容。
cr315 发表于 2025-11-5 16:23 | 显示全部楼层
链接器脚本可能不兼容
duo点 发表于 2025-11-5 17:23 | 显示全部楼层
检查链接脚本STM32F030F4P6 Dev Board Linker Script.ld是否适配新工具链。
elephant00 发表于 2025-11-5 15:24 | 显示全部楼层
-lstdc++ -lsupc++可能在新工具链中需要额外配置。检查是否缺少C++标准库的路径,或尝试添加-L指向新工具链的libstdc++路径
flycamelaaa 发表于 2025-11-5 19:25 | 显示全部楼层
建议用新工具链重新编译所有第三方库,库文件与工具链版本要一致。
jcky001 发表于 2025-11-5 18:56 | 显示全部楼层
新工具链可能使用了不同版本的C库或标准库,导致符号解析失败。
onlycook 发表于 2025-11-5 20:27 | 显示全部楼层
可能是库依赖顺序问题,调整库顺序,基础库在右侧
powerantone 发表于 2025-11-5 21:28 | 显示全部楼层
--specs=nosys.specs和--specs=nano.specs可能存在冲突
probedog 发表于 2025-11-5 22:30 | 显示全部楼层
移除--specs=nosys.specs,仅保留nano.specs。
solty 发表于 2025-11-5 22:51 | 显示全部楼层
检查-L指定的库路径是否存在,库文件(如.a)有咩有损坏。
spicy 发表于 2025-11-5 16:59 | 显示全部楼层
旧工具链生成的库可能未重新编译,导致符号不兼容。
stormwind123 发表于 2025-11-5 20:43 | 显示全部楼层
用新工具链重新编译所有第三方库。
七毛钱 发表于 2025-11-5 19:14 | 显示全部楼层
检查-mfloat-abi=soft是否与硬件浮点单元匹配
您需要登录后才可以回帖 登录 | 注册

本版积分规则

62

主题

62

帖子

0

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