2012-02-22 6 views
1

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

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

+0

Проверьте установку компилятора, а также добавьте опцию -v для проверки пути к библиотеке и убедитесь, что библиотеки необходимы. –

ответ

1

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

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

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

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

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

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

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

Смежные вопросы