Bonjour!
Je suis actuellement en première année de génie informatique à l'université, et notre projet de session est un robot (tournant un linux sur processeur ARM). L'IDE qui nous est fourni ne fonctionne malheureusement que sous Windows, et j'aimerais pouvoir coder sur mon MacBook sous mac OS X Leopard...
Je croyais que c'était facile de compiler pour une autre plateforme que la sienne (comme ce que TIGCC fait), mais apparemment il n'en est rien. Est-ce que quelqu'un aurait quelques précisions sur la façon de réussir cela?
Je me souviens
Ad mari usque ad mare
GENERATION 23: The first time you see this, copy it into your sig on any forum and add 1 to the generation. Social experiment.
Si tu connais le processeur (et j'ai cru comprendre que c'était le cas), tu devrais assez facilement trouver les arguments qui vont bien pour que GCC compile ce qu'il faut, voir même directement un compilateur qui va bien... Google ne donne rien quand tu cherches "compilateur <nom du processeur>" ?

Que cache le pays des Dieux ? -
Forum Ghibli -
Forum LittéraireLa fin d'un monde souillé est venue. L'oiseau blanc plane dans le ciel annonçant le début d'une longue ère de purification. Détachons-nous à jamais de notre vie dans ce monde de souffrance. Ô toi l'oiseau blanc, l'être vêtu de bleu, guide nous vers ce monde de pureté. - Sutra originel dork.
À vrai dire, je suis un peu confus... la version de GCC qui est déjà installée sur mon ordi semble pouvoir compiler pour processeur ARM, mais j'ai vu à plusieurs endroits des compilateurs (commerciaux) spécifiques, et une page de la doc de ubuntu dit qu'il faut carrément recompiler GCC et binutils... j'ai essayé, sans succès...
Je me souviens
Ad mari usque ad mare
GENERATION 23: The first time you see this, copy it into your sig on any forum and add 1 to the generation. Social experiment.
DevkitARM ne va pas lui convenir, c'est une chaîne d'outils pour ARM sans OS, alors qu'il lui faut une chaîne d'outils pour arm-linux-gnu.
Mais en tout cas, il est impossible de compiler pour arm-linux-gnu avec la chaîne d'outils de OS X, il faut compiler une version cross de GCC et Binutils, et il y aura aussi une compilation de la glibc dans tout ça.
Merci à tous! Donc, si je comprends bien, certaines versions de GCC peuvent compiler pour ARM, mais pas celle par défaut sur Mac. Je dois donc en compiler une moi-même...
Je me souviens
Ad mari usque ad mare
GENERATION 23: The first time you see this, copy it into your sig on any forum and add 1 to the generation. Social experiment.
Oui, et je suis moi même en train de compiler une toolchain gcc pour m68k (68040). Je vais me servir de newlib.
j'ai mis toutes les instructions dans un makefile, je peux te le passer dans la journée, ça t'inspirera.
Il y a quand-même des différences entre une chaîne d'outils newlib et une chaîne d'outils glibc (et c'est vraisemblablement cette dernière qu'il lui faudra).
En fait, la plateforme étant assez réduite, c'est uClibc qu'on utilise...
Je me souviens
Ad mari usque ad mare
GENERATION 23: The first time you see this, copy it into your sig on any forum and add 1 to the generation. Social experiment.
alors utilise buildroot pour faire ton build complet, t'auras tout en même temps, uclinux, uclibc, busybox, et une toolchain.
Je n'ai jamais fait ça mais ça m'intéresse de savoir: dans le cas où on n'a pas d'outils officiels pour le linux embarqué en question, il faut créer une toolchain soi-même avec linkerscript pour le format d'exécutable de destination et autres joyeusetés? Ou alors c'est plus ou moins standard? (dans le sens un linux reste un linux et les paramètres à modifier sont quasi nuls)
ça dépend.
pour les linux avec mmu la memorymap est toujours la même par cpu je pense, et on s'en sort avec un seul linkerscript par plate forme.
par contre en embarqué avec uclinux nommu par exemple, il y a des formats de fichiers relogeables, et là on a aussi un linker script qui produit des exécutables spéciaux, mais les ldscripts sont fournis.
*** BFD does not support target arm-unknown-linux-uclibc.
*** Look in bfd/config.bfd for supported targets.
make: *** [configure-bfd] Error 1
... ça me donne cette erreur lorsque j'essaye de compiler binutils...
Je me souviens
Ad mari usque ad mare
GENERATION 23: The first time you see this, copy it into your sig on any forum and add 1 to the generation. Social experiment.
Faut patcher ton Binutils peut-être?
Sinon, a priori Binutils n'a pas besoin de savoir que tu utilises ucLibc, ça touche GCC seulement.
utilise --target=arm-elf ou arm-coff
ça marche très bien.
C'est arm-elf dans son cas (GNU/Linux), mais les targets -elf et -coff sont faits pour les machines sans OS, donc il ferait mieux de configurer son Binutils pour arm-linux (et pour GCC, c'est bien arm-linux-uclibc qu'il lui faut, la libc est importante pour GCC).
ouais, mais ce n'est pas moi qui ai choisi... la plateforme a déjà un système d'exploitation (linux), je veux seulement compiler du code qui va tourner dessus...
je vais de ce pas essayer ce que vous m'avez dit, je vous en donne des nouvelles
Je me souviens
Ad mari usque ad mare
GENERATION 23: The first time you see this, copy it into your sig on any forum and add 1 to the generation. Social experiment.