Kompilieren mit arm-none-eabi-gcc und die Verknüpfung Bibliothek liba.ein Fehler

Ich bin kompilieren von "hello world" Programm in C auf einem 64-bit-Linux-Maschine. Ich verwende einen GCC-ARM-embedded-toolchain zur cross-Kompilierung mein Programm auf einem FOX G20-V board mit einem ATMEL AT91SAM9G20 Prozessor.

Auf den ersten nehmen, ich hatte ein paar Fehler beim kompilieren, da das Programm nicht erkennen das printf, return etc. Funktionen (die standard-C-Funktionen). Also habe ich beschlossen, die Verbindung zwischen den Funktionen, die ich glaube, sind definiert in der libc.eine Bibliothek (korrigiert mich wenn ich falsch Liege), dadurch arm-none-eabi-gcc -o hello hello.c libc.a aber das Ergebnis noch zu Fehlern führt:

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

Ich bin mir wirklich nicht sicher, warum das Programm immer noch nicht erkennen, die der standard-Funktionen, obwohl ich schon verbunden mit der Bibliothek der Anwendung. Wenn jemand einen Grund hat, warum, oder eine Lösung, wie kann ich dieses problem beheben, wäre ich sehr dankbar.

UPDATE

Ich heruntergeladen habe die glibc-Bibliothek von hier. Ich habe kompiliert und erstellt eine statische Bibliothek aus der syscalls.c Bibliothek, die ich gefunden habe newlib-2.1.0/libgloss/arm und wenn ich link die Bibliothek, um meine Anwendung code, ich bekomme immer noch den gleichen Fehler.

  • Genau das, was GCC-ARM-embedded-toolchain benutzt du? Wie es aussieht ist die Undefinierte Referenzen sind Funktionen, die Sie (oder jemand) erwartete schreiben zu integrieren, die libc.a Bibliothek für die spezifische Plattform.
  • Es ist die vorinstallierte 32-bit-version von Linero GCC. So es gibt etwas, das ich möchte hinzufügen, um den libc.a Bibliothek? Was könnte das sein, wenn so?
InformationsquelleAutor Adam | 2014-04-16
Schreibe einen Kommentar