Fichier.o

Résolu/Fermé
mike - 7 déc. 2005 à 17:10
 alphon5o - 16 déc. 2009 à 12:44
Bonjour , je crée un fichier .c , je le compile avec un makfile , j'ai donc dans mon rep , un binaire , un .c , et un .o , quand je tape cat.o j'ai juste ELF...et pleins d'inscriptions illisibles , hors le fichier.o contient le code assembleur du fichier , pq il m'affiche pas le code assembleur?
merci

3 réponses

kmf31 Messages postés 1564 Date d'inscription mercredi 30 mars 2005 Statut Contributeur Dernière intervention 22 juin 2007 501
7 déc. 2005 à 17:44
Le *.o n'est pas assembleur et c'est le fichier binaire compile mais pas encore executable, pour ca il faut encore faire le link.
Bref tu peux faire:

1) Creer un executable qui tourne:
gcc fichier.c -o programe

et apres executer avec:
./programe

ici "programe" est le nom de l'executable (tu peux choisir un autre nom, comme "fichier.out" ou "blabla" ou comme tu veux).

2) Creer le fichier.o comme tu l'as deja fait:
gcc -c fichier.c 

=> ca cree le fichier "fichier.o" (apres avec "gcc fichier.o -o ..." tu peux finir la compilation si tu veux).

3) Creer le fichier assemble ce que tu sembles de souhaiter (?):
gcc -S fichier.c

=> ca cree le fichier "fichier.s" qui est assembleur. Tu peux le regarder avec: "cat fichier.s" ou encore l'editer avec vi, emacs etc. si tu maitrise la language assembleur et apres tu peux aussi finir la compilation avec:
"gcc fichier.s -o ...".

Bref pour creer un fichier assembleur tu fais le dernier truc et tu utilises l'option "-S" avec gcc. Sans l'option "-S" le fichier assembleur est aussi cree mais tout de suite efface apres la compilation.
Normalement pour assembler on peux aussi utiliser la commande:
as fichier.s -o fichier.o

mais tu peux aussi utiliser directement la commande "gcc" qui est en realite seulement le programme de gestion, c.-a-d. le gcc appelle le preprocesseur C (le truc qui traite les #define et #include etc.), le compilateur, l'assembleur et la fin le linker. Pour voir tous ces details utilise l'option "-v" avec gcc pour afficher plus de blabla pendant toute la compilation.
11