Ich Kompilieren ein Hallo Welt Programm in C auf einem 64-Bit-Linux-Maschine. Ich verwende eine GCC ARM Embedded Toolchain, um mein Programm auf einem FOX G20 V Board mit einem ATMEL AT91SAM9G20 Prozessor zu kompilieren.Kompilieren mit Arm-ohne-EABI-gcc und die Verknüpfung Bibliothek liba.a Fehler
Auf dem ersten Take, hatte ich ein paar Fehler bei der Kompilierung, da das Programm nicht die printf erkannt hat, usw. Funktionen geben (die Standard-C-Funktionen). Also habe ich beschlossen, die Verbindung zwischen den Funktionen zu machen, die ich glaube, definiert sind, in der libc.a Bibliothek (korrigiert mich wenn ich falsch liege), von arm-none-eabi-gcc -o hello hello.c libc.a
zu tun, aber das Ergebnis noch immer zu Fehlern:
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 nicht sicher, warum das Programm die Standardfunktionen immer noch nicht erkennt, obwohl ich die Bibliothek mit der Anwendung verknüpft habe. Wenn jemand einen Grund hat, warum, oder eine Lösung, wie ich dieses Problem beheben kann, wäre ich sehr dankbar.
UPDATE
ich die glibc-Bibliothek von here heruntergeladen haben. Ich habe eine statische Bibliothek aus der syscalls.c
-Bibliothek kompiliert und erstellt, die ich in newlib-2.1.0/libgloss/arm
gefunden habe und wenn ich die Bibliothek mit meinem Anwendungscode verknüpfe, bekomme ich immer noch den gleichen Fehler.
Genau das, was GCC ARM Embedded-Toolchain verwenden Sie? Es sieht so aus, als wären die undefinierten Referenzen Funktionen, von denen Sie (oder jemand) erwarten, dass sie schreiben, um die Bibliothek 'libc.a' in die spezifische Plattform zu integrieren. –
@MichaelBurr Es ist die vorinstallierte 32-Bit-Version von Linero GCC. Also gibt es etwas, das ich der 'libc.a' Bibliothek hinzufügen müsste? Was könnte das sein, wenn das so ist? – Adam