View previous topic :: View next topic |
Author |
Message |
Saimoun n00b
Joined: 28 Aug 2009 Posts: 70 Location: Evry
|
Posted: Mon Nov 23, 2009 11:48 pm Post subject: [Developpement ASM] Cross-compilation 64b/32b (résolu) |
|
|
Bonsoir,
Je vous explique mon problème : je me suis mis à l'Assembleur il y a peu, et la compilation avec NASM en utilisant le format de sortie "bin" marchait très bien.
Sauf que voilà, j'ai voulu passer à un programme un peu plus grand, qui est réparti sur plusieurs fichiers : et là la compilation bloque au niveau de l'édition de lien, car je suis sous un système 64 bits (amd64 plus précisément) mais je veux compiler un exécutable en format 32 bits (pour pouvoir l'éxécuter dans le MBR d'une disquette, après).
Concrètement, j'ai :
Code: | fichier1.asm ---> nasm -f elf fichier1.asm ---> fichier1.o
fichier2.asm ---> nasm -f elf fichier2.asm ---> fichier2.o
(jusqu'ici tout va bien)
fichier1.o et fichier2.o ---> ld --oformat binary -o executable fichier1.o fichier2.o ----??----> executable |
Sauf que la dernière éxecution me renvoie
Quote: | ld: i386 architecture of input file `fichier1.o' is incompatible with i386:x86-64 output |
Faut savoir que je ne demande pas sans avoir cherché : j'ai fouillé le net, je suis allé voir (R)TFM (The F***ing Manuals), j'ai parcouru les forums, la Doc Gentoo, etc etc.
J'ai beau avoir cherché je n'ai trouvé quasiment aucun tuto sur le net qui apprend à se servir de ld o_O Du coup je suit allé voir le manuel, et j'ai trouvé l'option --oformat, qui est très mal documentée vu qu'elle ne donne même pas les formats possibles...
En cherchant sur le net, j'ai trouvé "objdump -i", qui renvoie une liste de format BFD... Oui ça n'a peut-être rien à voir, mais je les ai testé, et à mon avis celui qui conviendrai le mieux à mon problème serait le format "a.out-i386-linux", sauf que quand je l'essaye, j'ai une autre erreur :
Quote: | ld:kernel: can not set architecture: No such file or directory |
J'ai aussi trouvé ça dans la Doc : http://www.gentoo.org/proj/en/base/embedded/handbook/?part=1&chap=4
Mais j'ai comme l'impression que ça concerne plus la compilation des applications (en gros, les "emerge") que la compilation dans le cadre de développement d'applications hors Gentoo.
Voilà, vous savez tout. Je suis preneur de toute solution, que ça soit avec gcc, avec ld, ou même avec autre chose comme un script.
Voici quelques infos :
Code: | $ file fichier1.o
kernel.o: ELF 32-bit LSB relocatable, Intel 80386, version 1 (SYSV), not stripped
$ uname -a
Linux gentux 2.6.30-gentoo-r5 #9 Sun Oct 18 22:07:56 CEST 2009 x86_64 AMD Athlon(tm) 64 Processor 3800+ AuthenticAMD GNU/Linux
$ gcc-config -l
[1] x86_64-pc-linux-gnu-3.4.6
[2] x86_64-pc-linux-gnu-3.4.6-hardened
[3] x86_64-pc-linux-gnu-3.4.6-hardenednopie
[4] x86_64-pc-linux-gnu-3.4.6-hardenednopiessp
[5] x86_64-pc-linux-gnu-3.4.6-hardenednossp
[6] x86_64-pc-linux-gnu-4.3.4 *
$ binutils-config -l
[1] x86_64-pc-linux-gnu-2.18 *
|
Merci d'avance ! _________________ Saimoun, nouveau dans le monde de Gentoo
--- Espace perso : http://www.saimoun.fr/ ---
Last edited by Saimoun on Sun Nov 29, 2009 2:20 pm; edited 1 time in total |
|
Back to top |
|
|
kwenspc Advocate
Joined: 21 Sep 2003 Posts: 4954
|
Posted: Tue Nov 24, 2009 6:42 am Post subject: |
|
|
C'est bien ton ld à qui il faut préciser la chose.
Pour l'exécution, faut que ton kernel supporte l'émulation 32 bits (si t'es en multilib c'est que tu l'as)
Sinon oui la doc pour la cross-compilation vise le système emerge principalement. Dans ton cas tu peux te passer d'un système lourd de cross compilation vu que c'est supportés nativement le 32 bits sur 64 bits. |
|
Back to top |
|
|
Saimoun n00b
Joined: 28 Aug 2009 Posts: 70 Location: Evry
|
Posted: Sun Nov 29, 2009 2:20 pm Post subject: |
|
|
Ca répond à ma question, merci
Seulement j'ai plein d'autres problèmes, mais là c'est encore autre chose, ça rejoint la compilation Assembleur en plusieurs morceaux... En fait je ne sais pas s'il faut que je mette les directives (j'utilise Nasm) [ORG], [BITS], segment dans tous les fichiers où que l'indique ces directives lors de l'édition de liens des différents fichiers .o créés avec Nasm...
Enfin bref, faut que je me penche sur la question, je poserai une question claire et précise dans un autre topic quand j'en aurait une claire et précise. _________________ Saimoun, nouveau dans le monde de Gentoo
--- Espace perso : http://www.saimoun.fr/ --- |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|