Bonjour à tous,
Dans l'optique de créer un petit os, je me heurt à un problème problématique (forcément) :
Quand je link un code source C, compiler en fichier objet avec gcc, je ne parvient pas à me créer d’exécutable 32 bits correct. Je m'explique : je veut un fichier 32 bits exécutable standard, c'est à dire juste avec du code exécutable, pas avec des headers et une structure spéciale telle que le elf, par exemple. Pour ld, on peut utiliser la commande :
Mais comme mon pc est en 64 bits, je ne peux pas le faire pour des fichier 32 bits.
Code : Sélectionner tout - Visualiser dans une fenêtre à part $ ld --oformat binary
Sinon, j'ai une autre question :
gcc -c crée un fichier exécutable binaire, c'est ça ? Mais simplement, sans les headers des fichiers exécutables du style elf etc ?
Ensuite, si on utilise un désassembleur, est ce que l'on voit les headers ?
Enfin, les commandes :
donnent le même résultat que :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 gcc -m32 -c monfichier gcc -m32 -c monfichier2 ld -m elf_i386 monfichier.o monfichier2.o -o monexecutable
où monfichier est monfichier et monfichier2 combinés ensemble, lorsque j'utilise un désassembleur pour voir le résultat.
Code : Sélectionner tout - Visualiser dans une fenêtre à part gcc -m32 -c monfichier
Est ce normal ?
Normalement, comme je link en elf, je devrais avoir un fichier elf, non, pas un binaire pur ?
Partager