在函数__libc_init_array中:对_init

时间:2019-10-29 20:33:26

标签: gcc linker linker-errors stm32

我正在尝试在命令行(Linux)上为stm32构建一个简单的程序(无限循环),并且用于编译和链接的命令均来自教程。我在链接阶段陷入困境,我也不知道为什么。我想我缺少_init了,但我有点惊讶它没有包含在下面的文件中。之前在Stackoverflow上已经问过这个问题,但是我发现建议的解决方案没有帮助。我试图找出构建stm32程序所需的文件,最后得到下面的文件。

在Cube HAL软件包中命名的文件:

cmsis_compiler.h
cmsis_gcc.h
cmsis_version.h
core_cm4.h
mpu_armv7.h
stm32l4xx.h
stm32l412xx.h
system_stm32l4xx.h
system_stm32l4xx.c
startup_stm32l412xx.S
STM32L412KBTx_FLASH.ld

我通过以下方式指定了微控制器(在我的情况下为smt32l412k8t6) 取消对stm32l4xx.h

中的 / *#define STM32L412xx / / 行的注释

用于编译的命令:

arm-none-eabi-gcc -x assembler-with-cpp -c -O0 -mcpu=cortex-m4 -mthumb -Wall -fmessage-length=0 startup_stm32l412xx.S -o startup_stm32l412xx.o
arm-none-eabi-gcc -c -mcpu=cortex-m4 -mthumb -Wall -g -fmessage-length=0 --specs=nosys.specs system_stm32l4xx.c -o system_stm32l4xx.o
arm-none-eabi-gcc -c -mcpu=cortex-m4 -mthumb -Wall -g -fmessage-length=0 --specs=nosys.specs  main.c -o main.o 

用于链接+错误消息的命令:

arm-none-eabi-gcc startup_stm32l412xx.o system_stm32l4xx.o main.o -mcpu=cortex-m4 -mthumb -Wall --specs=nosys.specs -nostdlib -lgcc -T./STM32L412KBTx_FLASH.ld -o main.elf

/usr/lib/gcc/arm-none-eabi/6.3.1/../../../arm-none-eabi/lib/thumb/v7e-m/libc.a(lib_a-init.o): In function `__libc_init_array':
/build/newlib-jo3xW1/newlib-2.4.0.20160527/build/arm-none-eabi/thumb/v7e-m/newlib/libc/misc/../../../../../../../newlib/libc/misc/init.c:37: undefined reference to `_init'
collect2: error: ld returned 1 exit status

0 个答案:

没有答案