cross compilation

39 views
Skip to first unread message

Baudouin MARTIN

unread,
May 26, 2011, 10:46:31 AM5/26/11
to groupe-de-discussion-autour-...@googlegroups.com
Bonjour à tous,

je cherche à compiler mes applications C++ sur un PC avec windows ou ubuntu. Pour windows, j'ai suivi le tutoriel avec eclipse. Une fois l'exécutable installé, je le télécharge par scp sur la foxboard.  Seulement quand je cherche à l'exécuter le programme, il met un message d'erreur me disant que je n'ai pas la bonne version de la librairie c++ !!?  Le message d'erreur est le suivant :

/root/testARM4.exe: /usr/lib/libstdc++.so.6: version 'CXXABI_ARM_1.3.3' not found (required by /root/testARM4.exe)

 J'arrive à contourner le probleme lorsque je compile en static (comme ça il n'utilise plus de librairie dynamique) mais ce n'est pas ce que je veux faire. Une idée ?

D'autre part lorsque j'installe sur ubuntu les paquets pour cross-compiler, je tape les mêmes lignes de commandes que ce que fait Eclipse sous windows. La compilation se passe bien, seulement, quand je télécharge l'exécutable sur la foxboard, il me met "Illegal Instruction".  Aussi une idée ?

Merci d'avance.

BM

Antonio Galea

unread,
May 26, 2011, 5:27:12 PM5/26/11
to groupe-de-discussion-autour-...@googlegroups.com
2011/5/26 Baudouin MARTIN <baudoui...@gmail.com>:

>
> je cherche à compiler mes applications C++ sur un PC avec windows ou ubuntu.
> Pour windows, j'ai suivi le tutoriel avec eclipse. Une fois l'exécutable
> installé, je le télécharge par scp sur la foxboard.  Seulement quand je
> cherche à l'exécuter le programme, il met un message d'erreur me disant que
> je n'ai pas la bonne version de la librairie c++ !!?  Le message d'erreur
> est le suivant :
>
> /root/testARM4.exe: /usr/lib/libstdc++.so.6: version 'CXXABI_ARM_1.3.3' not
> found (required by /root/testARM4.exe)

Ton compilateur est plus nouveau que la librairie sur la Fox:

https://www.codesourcery.com/archives/arm-gnu/msg03981.html

> D'autre part lorsque j'installe sur ubuntu les paquets pour cross-compiler,
> je tape les mêmes lignes de commandes que ce que fait Eclipse sous windows.
> La compilation se passe bien, seulement, quand je télécharge l'exécutable
> sur la foxboard, il me met "Illegal Instruction".  Aussi une idée ?

Il est possible que tu n'ai pas compile pour la Fox, mais pour Ubuntu;
tu le peux verifier avec le command "file /root/testARM4.exe".
Quelle sont le lignes de commandes que tu tapes?

Antonio

Baudouin MARTIN

unread,
May 29, 2011, 4:42:51 PM5/29/11
to groupe-de-discussion-autour-...@googlegroups.com
Le 26 mai 2011 23:27, Antonio Galea <antoni...@gmail.com> a écrit :
2011/5/26 Baudouin MARTIN <baudoui...@gmail.com>:
>
> je cherche à compiler mes applications C++ sur un PC avec windows ou ubuntu.
> Pour windows, j'ai suivi le tutoriel avec eclipse. Une fois l'exécutable
> installé, je le télécharge par scp sur la foxboard.  Seulement quand je
> cherche à l'exécuter le programme, il met un message d'erreur me disant que
> je n'ai pas la bonne version de la librairie c++ !!?  Le message d'erreur
> est le suivant :
>
> /root/testARM4.exe: /usr/lib/libstdc++.so.6: version 'CXXABI_ARM_1.3.3' not
> found (required by /root/testARM4.exe)

Ton compilateur est plus nouveau que la librairie sur la Fox:

 https://www.codesourcery.com/archives/arm-gnu/msg03981.html

ah effectivement ça doit être ça. Je n'y avais pas pensé.

 

> D'autre part lorsque j'installe sur ubuntu les paquets pour cross-compiler,
> je tape les mêmes lignes de commandes que ce que fait Eclipse sous windows.
> La compilation se passe bien, seulement, quand je télécharge l'exécutable
> sur la foxboard, il me met "Illegal Instruction".  Aussi une idée ?

Il est possible que tu n'ai pas compile pour la Fox, mais pour Ubuntu;
tu le peux verifier avec le command "file /root/testARM4.exe". 
Quelle sont le lignes de commandes que tu tapes?

en fait je me suis aperçu après que je ne tapais pas toutes les commandes. Voici par la suite ce que j'ai tapé :

arm-linux-gnueabi-g++-4.4 -O0 -Wall -Wa,-adhlns="file01.o.lst" -fno-exceptions -fno-rtti -c -fmessage-length=0 -MMD -MP -MF"file01.d" -MT"file01.d" -mcpu=arm926ej-s -mthumb -g3 -gdwarf-2 -o"file01.o" "testarm.cc"

arm-linux-gnueabi-g++-4.4 -Wl,-Map,testARM.map -mcpu=arm926ej-s -mthumb -g3 -gdwarf-2 -o"testARM2.elf"  ./file01.o

arm-linux-gnueabi-objdump -h -S testARM2.elf >"testARM.lst"

arm-linux-gnueabi-size  --format=berkeley testARM2.elf

J'obtiens bien un test2ARM.elf, et là compilation se passe bien mais j'ai le message "Illegal instruction" à tous les coups lorsque je tente de l'executer sur la foxboard.

Si quelqu'un a une idée...

BM

Baudouin MARTIN

unread,
May 30, 2011, 10:46:17 AM5/30/11
to groupe-de-discussion-autour-...@googlegroups.com
bon et ben en fait c'était tout simple. La librairie qui était sur la foxboard devait effectivement être plus ancienne. Du coup j'ai fabriqué une microSD avec la version Squeeze de Debian. Maintenant ça marche.

BM
Reply all
Reply to author
Forward
0 new messages