Je viens de compiler un compilateur croisé en utilisant des tables croisées "mips-unknown-linux-gnu-gcc" et j'ai compilé un programme Hello World. La compilation est bien passé en utilisant la commande suivante: "mips-unknown-linux-gnu-g ++ hello.cpp -o bonjour" mais quand je lance la commande "./hello" Je reçois l'erreur suivante:Erreur d'exécution binaire du compilateur croisé
babbage-dasnyder 50% mips-unknown-linux-gnu-g++ hello.cpp -o hello
babbage-dasnyder 51% ./hello
./hello: Exec format error. Wrong Architecture.
Pourquoi est-ce? Ai-je fait le mauvais compilateur croisé? Je cours ceci sur une machine de Linux.
Tout comme une note, crosstools l'avez dit pourrait exécuter un programme trivial:
+ /home/seas/grad/dasnyder/opt/crosstool/gcc-3.4.5-glibc-2.3.6/mips-unknown-linux-gnu/bin/mips-unknown-linux-gnu-gcc -static hello.c -o mips-unknown-linux-gnu-hello-static
+ /home/seas/grad/dasnyder/opt/crosstool/gcc-3.4.5-glibc-2.3.6/mips-unknown-linux-gnu/bin/mips-unknown-linux-gnu-gcc hello.c -o mips-unknown-linux-gnu-hello
+ test -x /home/seas/grad/dasnyder/opt/crosstool/gcc-3.4.5-glibc-2.3.6/mips-unknown-linux-gnu/bin/mips-unknown-linux-gnu-g++
+ cat
+ /home/seas/grad/dasnyder/opt/crosstool/gcc-3.4.5-glibc-2.3.6/mips-unknown-linux-gnu/bin/mips-unknown-linux-gnu-g++ -static hello2.cc -o mips-unknown-linux-gnu-hello2-static
+ /home/seas/grad/dasnyder/opt/crosstool/gcc-3.4.5-glibc-2.3.6/mips-unknown-linux-gnu/bin/mips-unknown-linux-gnu-g++ hello2.cc -o mips-unknown-linux-gnu-hello2
+ echo testhello: C compiler can in fact build a trivial program.
testhello: C compiler can in fact build a trivial program.
+ test '' = 1
+ test '' = 1
+ test '' = 1
+ test 1 = ''
+ echo Done.
Done.
Exécutez-vous "./hello" sur le même ordinateur que vous l'avez compilé? –
Si vous êtes sur Windows et que vous compilez un programme pour Linux, pensez-vous que votre nouveau programme Linux fonctionnera sous Windows? Cette situation n'est pas vraiment différente ... (Si vous le faites, alors il y a une question beaucoup plus abstraite que vous devez demander) – Cogwheel
Oui, je l'exécute sur la même machine, peut-être que je suis un peu confus, mon but est de compiler un programme sur ma machine linux afin que je puisse ensuite démonter le fichier elf et le charger dans un simulateur de mips que j'ai construit. Donc le fichier elf devrait être un fichier elf MIPS. Je peux voir où cela ne peut pas s'exécuter sur la machine linux, mais alors comment puis-je tester que le compilateur a fonctionné correctement et que le binaire compilé fonctionne correctement? Gardez à l'esprit que mon simulateur de Mips est en cours de test et ne peut pas encore être utilisé pour une telle vérification. –