La compilation à l'aide arm-none-eabi-gcc et de liaison de la bibliothèque liba.une erreur
Je suis à la compilation d'un programme "hello world" en C sur une version 64 bits de Linux de la machine. Je suis à l'aide de GCC ARM intégré de la chaîne de cross compiler mon programme sur un FOX G20 V board avec un ATMEL AT91SAM9G20 processeur.
La première fois, j'ai eu quelques erreurs lors de la compilation, car le programme ne reconnaît pas le printf, retour etc. fonctions (le standard de fonctions C). J'ai donc décidé de faire le lien entre les fonctions, qui, je crois, sont définis dans la libc.une bibliothèque (corrigez-moi si je me trompe), en faisant arm-none-eabi-gcc -o hello hello.c libc.a
mais les résultats ont toujours conduit à des erreurs:
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
Je suis vraiment pas certain de la raison pour laquelle le programme ne reconnaît toujours pas les fonctions standard, même si je suis lié à la bibliothèque de l'application. Si quelqu'un a une raison pour expliquer pourquoi, ou une solution à comment je peux résoudre ce problème, je vous serais très reconnaissant.
Mise à JOUR
J'ai téléchargé la bibliothèque glibc de ici. J'ai compilé et créé une bibliothèque statique de la syscalls.c
bibliothèque que j'ai trouvé dans newlib-2.1.0/libgloss/arm
et quand j'ai le lien de la bibliothèque de mon code, j'obtiens toujours la même erreur.
libc.a
de la bibliothèque de la plate-forme spécifique.C'est le pré-construit la version 32 bits de Linero GCC. Donc, il y a quelque chose que j'aurais à ajouter à la
libc.a
bibliothèque? Ce pourrait être le cas échéant?
OriginalL'auteur Adam | 2014-04-16
Vous devez vous connecter pour publier un commentaire.
Essayez d'exécuter ceci:
Votre boîte à outils semble fournir les librdimon.un, une bibliothèque qui fournit la norme de base C fonctions.
OriginalL'auteur Adam