Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
[Developpement ASM] Cross-compilation 64b/32b (résolu)
View unanswered posts
View posts from last 24 hours

 
Reply to topic    Gentoo Forums Forum Index French
View previous topic :: View next topic  
Author Message
Saimoun
n00b
n00b


Joined: 28 Aug 2009
Posts: 70
Location: Evry

PostPosted: Mon Nov 23, 2009 11:48 pm    Post subject: [Developpement ASM] Cross-compilation 64b/32b (résolu) Reply with quote

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
View user's profile Send private message
kwenspc
Advocate
Advocate


Joined: 21 Sep 2003
Posts: 4954

PostPosted: Tue Nov 24, 2009 6:42 am    Post subject: Reply with quote

C'est bien ton ld à qui il faut préciser la chose.
Code:
ld -m elf_i386

:wink:

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
View user's profile Send private message
Saimoun
n00b
n00b


Joined: 28 Aug 2009
Posts: 70
Location: Evry

PostPosted: Sun Nov 29, 2009 2:20 pm    Post subject: Reply with quote

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
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index French All times are GMT
Page 1 of 1

 
Jump to:  
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