Неопределенная ссылка на __libc_init_array - PullRequest
1 голос
/ 22 февраля 2012

Я пытаюсь скомпилировать некоторый код для чипа STM32, используя инструменты CodeBench G ++ Lite. Тем не менее, он генерирует ошибку.

    startup.o: In function `LoopFillZerobss':
(.text.Reset_Handler+0x2a): undefined reference to `__libc_init_array'

Я гуглил и похоже, что libc_init_array, вероятно, является частью какой-то стандартной библиотеки gcc ... но я не уверен, как исправить эту ошибку?

У меня также есть ошибки, подобные этой

arm-none-eabi-ld: cannot find libc.a

и аналогично для libgcc.a и libm.a

1 Ответ

1 голос
/ 17 марта 2012

Функция __libc_init_array является частью механизма CodeSourcery 'CS3' для кода запуска, который обеспечивает статическую инициализацию всех программ перед выполнением main.

Запустите, обеспечив всебиблиотеки найдены.Этого может быть достаточно, чтобы исправить все ваши проблемы.

Один из подходов - использовать arm-none-eabi-g ++, а не напрямую использовать arm-none-eabi-ld, чтобы выполнить связывание, потому что g ++ должен правильно передавать некоторые важные параметры в arm-none-eabi-смертельная дозаВ некоторых случаях это может быть все, что нужно для поиска и компоновки правильных библиотек.

Если вы не знаете, как собирать данные из командной строки, или arm-none-eabi-g ++ - нетДелая все, чтобы устранить недостающие библиотеки, зайдите на веб-сайт LeafLabs, где они показывают, как собрать из командной строки, используя Makefiles http://leaflabs.com/docs/unix-toolchain.html

Они предоставляют бесплатную среду разработки с открытым исходным кодом.для STM32, построенный для Windows, Linux и Mac, который включает работающий набор инструментов на основе gcc для каждой из этих платформ и достаточное количество библиотек для начала работы http://leaflabs.com/docs/maple-ide-install.html

Даже если вы предпочитаете использоватьВаш инструментарий для фактической сборки, возможно, стоит использовать их, с их Makefiles, для проверки работоспособности процесса, который вы используете для сборки вашей программы.

Я не являюсь членом персонала LeafLabs и не имею никаких отношенийкроме компании, которая купила некоторые из их продуктов, и попробуйте ответить на вопросы на их форуме.

...