Компилю на Eclipse проект для платы STM32L-Discovery (взятый и адаптированный из TrueStudio)
все бы ничего, да только выдает ошибку:
Код
ite/bin/../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/lib/thumb2\libc.a(lib_a-init.o): In function `__libc_init_array':
init.c:(.text+0x38): undefined reference to `_init'
collect2: ld returned 1 exit status
cs-make: *** [STM32L_Test_debug2.elf] Error 1[Libraries/CMSIS/CM3/DeviceSupport/ST/STM32L1xx/startup/TrueSTUDIO/startup_stm32l1xx_md.o] Error 1
у меня был еще 1 проект для другой платы, я сравнил sturtup файлы этих проектов и в том, который работает не было строчки
Код
...
/* Call static constructors */
bl __libc_init_array
...
т.е. файл выглядел так
Код
...
LoopFillZerobss:
ldr r3, = _ebss
cmp r2, r3
bcc FillZerobss
/* Call the clock system intitialization function.*/
bl SystemInit
/* Call the application's entry point.*/
bl main
bx lr
.size Reset_Handler, .-Reset_Handler
...
я убрал эту строчку и все отлично скомпилировалось, но программа работает не так как нужно
В общем, вопрос такой что это за конструктор и что он делает в startup файле?
может мне нужно его как то задействовать?
Сообщение отредактировал IgorKossak - Nov 8 2011, 18:41