У меня проблема с _sbrk. На этапе компиляции я использую команду ниже, чтобы связать мои объекты, и я получаю неопределенную ссылку на _sbrk.
arm-none-eabi-ld -static -T linkerscript.ld -o exe timer_example.o /home/ziga/projects/cs_lite/arm-none-eabi/lib/libc.a /home/ziga/projects/cs_lite/lib/gcc/arm-none-eabi/4.5.1/libgcc.a
Я компилирую для arm926ej-s и в режиме ARM, поэтому я думаю, что выбрал правильную мультибиблиотеку (libc.a и libgcc.a), которая находится в папке home / ziga / projects / cs_lite / arm-none-eabi /lib/.
Я искал в интернете функцию _sbrk, и это своего рода вызов управления памятью, который не включен в стандартные библиотеки C, поскольку зависит от микропроцессора. Так я должен написать функцию _sbrk самостоятельно? Как мне это сделать? У вас есть пример для arm926ej-s? После написания этой функции я собираюсь скомпилировать ее в объектный файл и связать вместе с другими объектами, библиотеками.
С уважением, Зига.
Я решил эту проблему и опубликую здесь решение, поэтому я верну кое-что
распространяемый. Функция _sbrk находится внутри пакета NXP CDL для ARM. пакет
доступна для скачивания (ссылка для всех, кто этого еще не знает) здесь:
http://www.lpclinux.com/Downloads/WebHome
В подпапке CDL_v005 / csps / lpc313x / bsps / ea3131 / source вы найдете исходный файл
с именем libnosys_gnu.c, который должен быть добавлен в проект и скомпилирован в объект
файл и после этого связаны с исполняемым файлом вместе с другими объектами и
библиотеки.
С наилучшими пожеланиями и успехов.