ST意法半导体
直播中

carey123

10年用户 1557经验值
擅长:可编程逻辑 嵌入式技术
私信 关注
[问答]

从GCC9更改为GCC10 时出现STM32CubeIDE链接器错误如何处理?

当我选择较新的工具链“GNU Tools for STM32 (10.3-2021.10)”而不是迄今为止有效的工具链“GNU Tools for STM32 (9-2020-q2-update)”时,我遇到了一些链接器错误。完全相同的代码构建在较旧的工具链上很好,但在较新的工具链上抛出这些错误。
控制台输出:
23:30:06 **** 项目 STM32F030F4P6 的配置调试增量构建 ****
使-j24全部
arm-none-eabi-g++ -o "STM32F030F4P6.elf" @"objects.list" -lstm32f030f4p6 -lcmos0 -mcpu=cortex-m0 -T" C:UsersAdminDesktopProjekteEmbeddedDev Board STM32F030F4P6 SoftwareSTM32F030F4P6STM32F030F4P6 开发板链接脚本.ld" --specs=nosys.specs -Wl,-Map="STM32F030F4P6.map" -Wl,--gc-sections -nostartfiles -nodefaultlibs -nostdlib -static -L" C :UsersAdminDesktopProjekteEmbeddedDeviceDriverSTM32F030F4P6APILib " -L" C:UsersAdminDesktopProjekteEmbeddedCMOSAPILib " --specs=nano.specs - mfloat-abi=soft -mthumb -Wl,--start-group -lc -lm -lstdc++ -lsupc++ -Wl,--end-group
c:ststm32cubeide_1.9.0stm32cubeidepluginscom.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127toolsarm-none-eabi binld.exe : c:/st/stm32cubeide_1.9.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/工具/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofplibc_nano .a(lib_a-abort.o):在函数“中止”中:
abort.c:(.text.abort+0xa): 未定义对“_exit”的引用
c:ststm32cubeide_1.9.0stm32cubeidepluginscom.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127toolsarm-none-eabi binld.exe : c:/st/stm32cubeide_1.9.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/工具/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofplibc_nano .a(lib_a-signalr.o):在函数“_kill_r”中:
signalr.c:(.text._kill_r+0xe): 未定义对“_kill”的引用
c:ststm32cubeide_1.9.0stm32cubeidepluginscom.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127toolsarm-none-eabi binld.exe : c:/st/stm32cubeide_1.9.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/工具/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofplibc_nano .a(lib_a-signalr.o):在函数“_getpid_r”中:
signalr.c:(.text._getpid_r+0x2): 未定义对“_getpid”的引用
collect2.exe:错误:ld 返回 1 退出状态
make: *** [makefile:77: STM32F030F4P6.elf] 错误 1
“make -j24 all”以退出代码 2 终止。构建可能不完整。
23:30:06 构建失败。7 个错误,0 个警告。(耗时 213 毫秒)
我不想使用标准库进行链接或启动代码,因为该代码是裸机的。我怎样才能解决这个问题?









回帖(1)

李勇

2023-2-2 11:16:46
解决方案:只需用自己的实现覆盖那些函数:


  • int _kill(int, int)
  •         {
  •                 return(-1);
  •         }

  • int _getpid()
  •         {
  •                 return(1);
  •         }

  • void _exit(int)
  •         {
  •                 while(1)
  •                 {
  •                        
  •                 }
  •         }
举报

更多回帖

发帖
×
20
完善资料,
赚取积分