# Cross-compilation

**URL:** <https://www.debian-fr.org/t/cross-compilation/14434>\
**Category:** Programmation\
**Created:** [Février 20, 2016, 5:46 UTC](https://www.debian-fr.org/t/cross-compilation/14434 "2016-02-20T17:46:17Z")\
**Posts on this page:** 13\
**Page:** 1

<div class="post-metadata">

**Author:** ![kran](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/k/c0e974/32.png) [@kran](https://www.debian-fr.org/u/kran)\
**Post date:** [Février 20, 2016, 5:46 UTC](https://www.debian-fr.org/t/cross-compilation/14434/1 "2016-02-20T17:46:17Z")

</div>

Bonjour,

Je n’avais jamais fait de cross-compilation avant, j’ai bien ajouté le chemin où se trouvent les ficheirs .pc dans la variavle d’environnement PKG\_PACKAGE\_PATH, mais j’ai un probleme :

lorsque je fait #include \<glib.h\>  
j’ai une erreur me disant que qu’il ne le trouve pas, or si je met le chemin complet :

#include “blabla … /glib.h”

Cette fois c’est les fichiers inclus dans glib.h (par exemple glib/blabla.h) qu’il ne trouve pas … Quelqu’un s’y connait la dedans ?

Merci beaucoup,  
Nico

---

<div class="post-metadata">

**Author:** ![mattotop](https://www.debian-fr.org/user_avatar/www.debian-fr.org/mattotop/32/3942_2.png) [@mattotop](https://www.debian-fr.org/u/mattotop)\
**Post date:** [Février 20, 2016, 5:46 UTC](https://www.debian-fr.org/t/cross-compilation/14434/2 "2016-02-20T17:46:18Z")

</div>

C’est bizarre, ta variable PKG\_PACKAGE\_PATH ne me dit rien et je n’ai rien trouvé sur google à son sujet.

Le pb ne vient AMA pas d’un quelconque PACKAGE\_PATH, mais plutot d’un path pour les include. Je ne me souviens pas de la variable d’environnement pour passer des options de compil à gcc, mais il faudrait que tu lui dise de compiler avec un -I /le/chemin/vers/tes/include/, soit en surchargeant les règles dans ton makefile, soit en retrouvant le nom de la variable avec les options de gcc (GCC\_OPTIONS ?)

Sinon, tu compiles vers quelle architecture cible ? Tu as suivi un tuto quelconque ?

---

<div class="post-metadata">

**Author:** ![douarn](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/d/8edcca/32.png) [@douarn](https://www.debian-fr.org/u/douarn)\
**Post date:** [Février 20, 2016, 5:46 UTC](https://www.debian-fr.org/t/cross-compilation/14434/3 "2016-02-20T17:46:19Z")

</div>

bonjour Kran,  
je ne sais pas si cela peux te mettre sur la voie mais perso pour faire de la crosscompilation (pour une archi mipsel) j’ajoute à la variable PATH le chemin de la chaine de cross compilation, typiquement un truc comme ce qui suit :

```auto

```

---

<div class="post-metadata">

**Author:** ![kran](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/k/c0e974/32.png) [@kran](https://www.debian-fr.org/u/kran)\
**Post date:** [Février 20, 2016, 5:46 UTC](https://www.debian-fr.org/t/cross-compilation/14434/4 "2016-02-20T17:46:21Z")

</div>

Je compile pour un eBook (l’iLiad), c’est une architecture x86… Bon le problème vient bien des paramètres du compilo dans le make. Je dois bien rajouter -I/home/usr…/include

Le problème c’est qu’apparemment ça inclut pas les sous-dossiers … c’est à dire que je dois mettre -I/…/include/glib (par exemple) mais aussi, -I/…/include/libxml et toutes les autres …

Vous savez comment faire ca ?

---

<div class="post-metadata">

**Author:** ![mattotop](https://www.debian-fr.org/user_avatar/www.debian-fr.org/mattotop/32/3942_2.png) [@mattotop](https://www.debian-fr.org/u/mattotop)\
**Post date:** [Février 20, 2016, 5:46 UTC](https://www.debian-fr.org/t/cross-compilation/14434/5 "2016-02-20T17:46:21Z")

</div>

ben habituellement, il me semble que ca fonctionne avec des include sous la forme #include \<subdir/truc.h\>. A priori, un seul -I devrait suffire si tu penses à préciser le sous rep des include dans ton code.  
non ?

Sinon, tu regroupes des liens symboliques dans un repertoire:[code]# cd /le/chemin/de/ton/include

# mkdir tous

# ln -s \*.h _/_.h tous[/code]et tu l’utilise pour le -I

---

<div class="post-metadata">

**Author:** ![kran](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/k/c0e974/32.png) [@kran](https://www.debian-fr.org/u/kran)\
**Post date:** [Février 20, 2016, 5:46 UTC](https://www.debian-fr.org/t/cross-compilation/14434/6 "2016-02-20T17:46:21Z")

</div>

yep pas bete ! (en fait il fallait que je fasse ça, car dans la SDK ca se présente sous la forme …/include/gtk-2.0/gtk/toto.h … et dans le code tu met include \<gtk/toto.h\>) … Enfin bref 🙂

C’est un peu galère de reprendre de l’open source quand tu connait deja pas les bases de la compilation croisée …

Le main ressemble à ça : (bon la c’est bourrin le début parce que c’est la version où j’ai mis tous les -I ^^)

[code]export CC=gcc  
export CFLAGS=-g -Wall -I/home/user/iLiadToolKit/usr/local/arm/oe/arm-linux/include/glib-2.0  
-I/home/user/iLiadToolKit/usr/local/arm/oe/arm-linux/lib/glib-2.0/include -I/home/user/iLiadToolKit/usr/local/arm/oe/arm-linux/lib/gtk-2.0/include -I/home/user/iLiadToolKit/usr/local/arm/oe/arm-linux/include/libxml2 -I/home/user/iLiadToolKit/usr/local/arm/oe/arm-linux/include/gtk-2.0 -I/home/user/iLiadToolKit/usr/local/arm/oe/arm-linux/include/pango-1.0 -I/home/user/iLiadToolKit/usr/local/arm/oe/arm-linux/include/atk-1.0 -I/home/user/iLiadToolKit/usr/local/arm/oe/arm-linux/include/ -I./include/ -I…/include/ `pkg-config --cflags gtk+-2.0 openssl libxml-2.0 glib-2.0 libcurl`

LDFLAGS= -I`pwd`/include/ `pkg-config --libs gtk+-2.0 openssl libxml-2.0 libcurl gthread-2.0`

IREXLD=-L/usr/local/lib -L/usr/local/ssl/lib -lfreetype -lfontconfig -lpng12 -lXrender -lX11 -lerdm -leripc

all: iNewsStand  
noiliad : iNewsStand\_noiliad

iNewsStand: main  
${CC} obj/\*.o ${LDFLAGS} ${IREXLD} -o iNewsStand

iNewsStand\_noiliad: main\_noiliad  
${CC} obj/\*.o ${LDFLAGS} -o iNewsStand

main:  
@(cd core && ${MAKE})  
@(cd gui && ${MAKE})  
@(cd libfeedbooks && ${MAKE})  
${CC} -o obj/main.o -c main.c ${CFLAGS}

main\_noiliad:  
@(cd core && ${MAKE} CFLAGS="${CFLAGS} -DNOILIAD")  
@(cd libfeedbooks && ${MAKE} CFLAGS="${CFLAGS} -DNOILIAD")  
@(cd gui && ${MAKE} CFLAGS="${CFLAGS} -DNOILIAD")  
${CC} -o obj/main.o -c main.c ${CFLAGS} -DNOILIAD

clean:  
rm -rf obj/\*.o iNewsStand  
[/code]

Mais maintenant j’ai une erreur à l’édition des liens :

`
cd '/home/user/iNewsStand' && PKG_CONFIG_PATH="/home/user/iLiadToolKit/usr/local/arm/oe/arm-linux/lib/pkgconfig/" LC_MESSAGES="C" LC_CTYPE="C" make -k
Compilation main.c (gcc)
Édition des liens iNewsStand (gcc)
/usr/bin/ld: cannot find -lerdm
collect2: ld returned 1 exit status
make: *** [iNewsStand] Error 1
make: Target `all' not remade because of errors.
***Sortie avec l'état : 2*** `

une idée ? (grrrr c’est énervant quand tu vas d’erreurs en erreurs)

---

<div class="post-metadata">

**Author:** ![mattotop](https://www.debian-fr.org/user_avatar/www.debian-fr.org/mattotop/32/3942_2.png) [@mattotop](https://www.debian-fr.org/u/mattotop)\
**Post date:** [Février 20, 2016, 5:46 UTC](https://www.debian-fr.org/t/cross-compilation/14434/7 "2016-02-20T17:46:21Z")

</div>

Mais non mais non.  
Bon, tu as dit au compilo ou trouver ses include, mais maintenant, il faut que tu lui précise ou trouver les libs (les dlls qui correspondent à ce qui est décrit dans tes .h).  
Ce coup ci, ajoutes un -L /le/chemin/vers/erdm.a à ta variable LDPATH, par exemple.

[network-theory.co.uk/docs/gc … ro\_21.html](http://www.network-theory.co.uk/docs/gccintro/gccintro_21.html)

---

<div class="post-metadata">

**Author:** ![kran](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/k/c0e974/32.png) [@kran](https://www.debian-fr.org/u/kran)\
**Post date:** [Février 20, 2016, 5:46 UTC](https://www.debian-fr.org/t/cross-compilation/14434/8 "2016-02-20T17:46:22Z")

</div>

😉 mais oui mais oui !

EDIT : merci quand meme 🙂

---

<div class="post-metadata">

**Author:** ![kran](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/k/c0e974/32.png) [@kran](https://www.debian-fr.org/u/kran)\
**Post date:** [Février 20, 2016, 5:46 UTC](https://www.debian-fr.org/t/cross-compilation/14434/9 "2016-02-20T17:46:22Z")

</div>

roooo bèh c’est pas possible ça … Pas moyen d’y arriver … j’ai beau ajouter le chemin vers liberdm comme tu me l’a indiqué … rien ! … C’est un peu galère quand même la manière dont c’est géré …

---

<div class="post-metadata">

**Author:** ![mattotop](https://www.debian-fr.org/user_avatar/www.debian-fr.org/mattotop/32/3942_2.png) [@mattotop](https://www.debian-fr.org/u/mattotop)\
**Post date:** [Février 20, 2016, 5:46 UTC](https://www.debian-fr.org/t/cross-compilation/14434/10 "2016-02-20T17:46:24Z")

</div>

Tu n’as testé que l’ajout du -L dans ldflags ou bien tu as essayé aussi dans CFLAGS ?  
Sinon, c’est peut être complexe (aprés tout c’est un peu normal pour un jonglage comme la cross compil), mais au moins tu tapes dans des simples modifications de paramètres dans des fichiers fichiers de config pour aller ajuster les valeurs par défaut (si c’était une compil standard, tu n’aurais rien à modifier).  
Imagines si tu étais dans le monde crosoft et que tu étais obligé d’aller chercher comme d’habitude sans doc gratuite au fond des 50 onglets de configuration de ton IDE la bonne textbox à remplir pour ajuster ton paramètrage.

---

<div class="post-metadata">

**Author:** ![kran](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/k/c0e974/32.png) [@kran](https://www.debian-fr.org/u/kran)\
**Post date:** [Février 20, 2016, 5:46 UTC](https://www.debian-fr.org/t/cross-compilation/14434/11 "2016-02-20T17:46:24Z")

</div>

lol JAMAIS je m’imaginerais dans le monde de crossoft 😉 … Bon en fait pour l’instant je fait mes tests en compilant pour ma machine… je ferais les tests pour porter le soft sur l’eBook plus tard. (Du coup je repasserais surement sur ce post 😉)

---

<div class="post-metadata">

**Author:** ![kran](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/k/c0e974/32.png) [@kran](https://www.debian-fr.org/u/kran)\
**Post date:** [Février 20, 2016, 5:49 UTC](https://www.debian-fr.org/t/cross-compilation/14434/12 "2016-02-20T17:49:57Z")

</div>

Bon … j’ai fini de développer mon soft … il compile impeccable pour mon système : maintenant faut que j’arrive à le compiler pour l’eBook (aie aie aie ! )

J’ai toujours le même problème avec cette satanée librairie -lerdm GRRrr ^^ … J’ai un paquet de message du style “skipping incompatible /CHEMIN/truc.so when searching for -librairy” ou “skipping incompatible /CHEMIN/truc.a when searching for -librairy”. Je suis à peu près au même point que les posts précédents … si un génie est dans la salle, je suis preneur 😉

---

<div class="post-metadata">

**Author:** ![mattotop](https://www.debian-fr.org/user_avatar/www.debian-fr.org/mattotop/32/3942_2.png) [@mattotop](https://www.debian-fr.org/u/mattotop)\
**Post date:** [Février 20, 2016, 5:49 UTC](https://www.debian-fr.org/t/cross-compilation/14434/13 "2016-02-20T17:49:59Z")

</div>

dans /CHEMIN/truc.so, est ce que /CHEMIN est cohérent par rapport à ton architecture cible ?  
que dit file [truc.so](http://truc.so) ?  
Peux tu donner un extrait de plusieurs lignes en entier du log d’erreur ?
