В функции __libc_init_array: неопределенная ссылка на _init - PullRequest
0 голосов
/ 29 октября 2019

Я пытаюсь построить простую программу (бесконечный цикл) для stm32 в командной строке (Linux), а команды, используемые для компиляции и компоновки, взяты из учебника. Я застреваю на этапе связывания, и я понятия не имею, почему. Я думаю, что мне не хватает _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), раскомментировав / * # define STM32L412xx / / ! в строке stm32l4xx.h

Команды, используемые для компиляции:

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
...