Компиляция с использованием arm-none-eabi-gcc и связывание библиотеки liba.ошибка

я компилирую программу hello world на C на 64-разрядной машине Linux. Я использую встроенную цепочку инструментов GCC ARM для кросс-компиляции моей программы на плате FOX G20 V с процессором ATMEL AT91SAM9G20.

на первом дубле у меня было несколько ошибок при компиляции, потому что программа не распознала printf, return и т. д. функции (стандартные функции C). Поэтому я решил сделать связь между функциями, которые, я считаю, определены в libc.библиотека (поправьте меня, если я неправильно), делая arm-none-eabi-gcc -o hello hello.c libc.a но результат по-прежнему приводит к ошибкам:

libc.a(lib_a-exit.o): In function `exit':
exit.c:(.text.exit+0x16): undefined reference to `_exit'
libc.a(lib_a-sbrkr.o): In function `_sbrk_r':
sbrkr.c:(.text._sbrk_r+0xc): undefined reference to `_sbrk'
libc.a(lib_a-writer.o): In function `_write_r':
writer.c:(.text._write_r+0x10): undefined reference to `_write'
libc.a(lib_a-closer.o): In function `_close_r':
closer.c:(.text._close_r+0xc): undefined reference to `_close'
libc.a(lib_a-fstatr.o): In function `_fstat_r':
fstatr.c:(.text._fstat_r+0xe): undefined reference to `_fstat'
libc.a(lib_a-isattyr.o): In function `_isatty_r':
isattyr.c:(.text._isatty_r+0xc): undefined reference to `_isatty'
libc.a(lib_a-lseekr.o): In function `_lseek_r':
lseekr.c:(.text._lseek_r+0x10): undefined reference to `_lseek'
libc.a(lib_a-readr.o): In function `_read_r':
readr.c:(.text._read_r+0x10): undefined reference to `_read'
collect2: error: ld returned 1 exit status

Я действительно не уверен, почему программа все еще не распознает стандартные функции, хотя я связал библиотеку с приложением. Если у кого-то есть причина или решение, как я могу решить эту проблему, я был бы очень благодарен.

обновление

Я загрузил библиотеку glibc из здесь. Я скомпилировал и создал статическая библиотека из syscalls.c библиотека, которую я нашел в newlib-2.1.0/libgloss/arm и когда я связываю библиотеку с моим кодом приложения, я все равно получаю ту же ошибку.

1 ответов


попробуем выполнить это:

arm-none-eabi-gcc --specs=rdimon.specs -lgcc -lc -lm -lrdimon -o hello hello.c

ваш инструментарий, похоже, предоставляет librdimon.a, библиотека, которая предоставляет основные стандартные функции C.