Page 1 sur 1

[cross-compilation ARM] problème d'édition de lien (résolu)

Publié : sam. 01 mars 2014, 18:53
par rasta
Bonjour,

Je viens poster un nouveau message ici car je me trouve en difficulté pour compilé un programme de test pour android sur ARM. J'effectue une compilation croisé avec arm-none-eabi-gcc mais le problème c'est qu'il lui manque les fonctions classique de la libc a lié au programme.
Je n'ai jamais fais de compilation croisé, alors si quelqu'un pourrais éclairé un peut ce serait vraiment très très sympas.
Je pense que ce qu'il me manque c'est un paquet à installé ou une option de compilation du genre -l ...quelquechose mais comme c'est pour une architecture différente, je suis tout débousolé sur la marche à suivre.


voici le programme de test basique:

Code : Tout sélectionner

#include <stdio.h>
int main(int argc, char *argv[])
{
	printf("Hello Android\n");
}
et voici la sortie du compilateur:

Code : Tout sélectionner

bibi$ arm-none-eabi-gcc hello.c -static -o staticHello
/usr/lib/gcc/arm-none-eabi/4.8.2/../../../../arm-none-eabi/lib/libc.a(lib_a-exit.o): In function `exit':
/build/arm-none-eabi-gcc/src/gcc-4.8.2/build/arm-none-eabi/newlib/libc/stdlib/../../../../../newlib/libc/stdlib/exit.c:70: undefined reference to `_exit'
/usr/lib/gcc/arm-none-eabi/4.8.2/../../../../arm-none-eabi/lib/libc.a(lib_a-sbrkr.o): In function `_sbrk_r':
/build/arm-none-eabi-gcc/src/gcc-4.8.2/build/arm-none-eabi/newlib/libc/reent/../../../../../newlib/libc/reent/sbrkr.c:58: undefined reference to `_sbrk'
/usr/lib/gcc/arm-none-eabi/4.8.2/../../../../arm-none-eabi/lib/libc.a(lib_a-writer.o): In function `_write_r':
/build/arm-none-eabi-gcc/src/gcc-4.8.2/build/arm-none-eabi/newlib/libc/reent/../../../../../newlib/libc/reent/writer.c:58: undefined reference to `_write'
/usr/lib/gcc/arm-none-eabi/4.8.2/../../../../arm-none-eabi/lib/libc.a(lib_a-closer.o): In function `_close_r':
/build/arm-none-eabi-gcc/src/gcc-4.8.2/build/arm-none-eabi/newlib/libc/reent/../../../../../newlib/libc/reent/closer.c:53: undefined reference to `_close'
/usr/lib/gcc/arm-none-eabi/4.8.2/../../../../arm-none-eabi/lib/libc.a(lib_a-fstatr.o): In function `_fstat_r':
/build/arm-none-eabi-gcc/src/gcc-4.8.2/build/arm-none-eabi/newlib/libc/reent/../../../../../newlib/libc/reent/fstatr.c:62: undefined reference to `_fstat'
/usr/lib/gcc/arm-none-eabi/4.8.2/../../../../arm-none-eabi/lib/libc.a(lib_a-isattyr.o): In function `_isatty_r':
/build/arm-none-eabi-gcc/src/gcc-4.8.2/build/arm-none-eabi/newlib/libc/reent/../../../../../newlib/libc/reent/isattyr.c:58: undefined reference to `_isatty'
/usr/lib/gcc/arm-none-eabi/4.8.2/../../../../arm-none-eabi/lib/libc.a(lib_a-lseekr.o): In function `_lseek_r':
/build/arm-none-eabi-gcc/src/gcc-4.8.2/build/arm-none-eabi/newlib/libc/reent/../../../../../newlib/libc/reent/lseekr.c:58: undefined reference to `_lseek'
/usr/lib/gcc/arm-none-eabi/4.8.2/../../../../arm-none-eabi/lib/libc.a(lib_a-readr.o): In function `_read_r':
/build/arm-none-eabi-gcc/src/gcc-4.8.2/build/arm-none-eabi/newlib/libc/reent/../../../../../newlib/libc/reent/readr.c:58: undefined reference to `_read'
collect2: error: ld returned 1 exit status
Merci d'avance de votre aide si vous prenez le temps de me répondre...

Re: [cross-compilation ARM] problème d'édition de lien

Publié : dim. 02 mars 2014, 19:09
par benjarobin
Comment as tu installé arm-none-eabi-gcc ? Tu as bien installé le paquet arm-none-eabi-gcc ?
Je vais faire le test...

Re: [cross-compilation ARM] problème d'édition de lien

Publié : dim. 02 mars 2014, 19:22
par rasta
Bonjour Benjarobin,

J'ai bien installé le paquet "arm-none-eabi-gcc" et "arm-none-eabi-binutils" de cettet façon:

Code : Tout sélectionner

$yaourt -S arm-none-eabi-gcc arm-none-eabi-binutils
Donc voilà, sa c'est bon.
Cependant, on dirait que le problème viens de la glibc, comme si les appels systèmes de bases n'était pas disponible!!!! (interprétation boiteuse?)

Je cherche sur internet mais la seul chose que je trouve de potable est ceci:
http://stackoverflow.com/questions/9632 ... -processor

qui conseil entre autre de téléchargé la chaine de compilation complète directement à ce lien:
http://www.mentor.com/embedded-software ... e-edition/

Je pourrais téléchargé le package du liens mais je pense que sa doit fonctionné sous arch, alors je continue.
A ce que j'ai compris, a chaque fois que l'on désire utiler une librairy sur ARM, il faut la recompilé pour la plateforme cible.

Je rajoute ici l'ensemble des options du compilateur arm-none-eabi-gcc:

Code : Tout sélectionner

$arm-none-eabi-gcc -v
Using built-in specs.
COLLECT_GCC=arm-none-eabi-gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/arm-none-eabi/4.8.2/lto-wrapper
Target: arm-none-eabi
Configured with: ../configure --target=arm-none-eabi --prefix=/usr --libexecdir=/usr/lib --with-pkgversion='Arch Repository' --with-bugurl=https://bugs.archlinux.org/ --enable-multilib --enable-interwork --enable-languages=c,c++ --with-newlib --with-gnu-as --with-gnu-ld --disable-nls --disable-shared --disable-threads --with-headers=newlib/libc/include --disable-libssp --disable-libstdcxx-pch --disable-libmudflap --disable-libgomp --with-system-zlib --disable-newlib-supplied-syscalls
Thread model: single
gcc version 4.8.2 (Arch Repository) 


En tout cas merci de consacré du temps à ce problème, moi je cherche encore.....

Re: [cross-compilation ARM] problème d'édition de lien(résol

Publié : dim. 16 mars 2014, 01:14
par rasta
Bon et bien au faite c'est bon. J'ai trouvé une solution efficace, c'est CLFS (cross linux from scratch). Cela m'a permit de résoudre toute mes lacunes afficher dans mes messages si dessuse et d'affiné mes connaissances, O TOP CLFS.

A bienôt. :=>)

http://trac.cross-lfs.org/