Pourquoi ne peut-on pas exécuter un .o ?
Fermé
mariusb
-
17 août 2011 à 11:03
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 17 août 2011 à 11:24
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 17 août 2011 à 11:24
A voir également:
- Pourquoi ne peut-on pas exécuter un .o ?
- O&o shutup10 - Télécharger - Confidentialité
- R/o - Forum Excel
- Executer .sh ✓ - Forum Shell
- Ô majuscule - Guide
1 réponse
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
17 août 2011 à 11:24
17 août 2011 à 11:24
Salut.
Oui, en effet l'édition des lien modifie un peu les fichiers et rajoute un en-tête particulier pour que ce soit un fichier exécutable. En plus, il me semble que par défaut tu lie toujours avec la libc. Un truc simple pour tester, tu supprimes (enfin, déplace ou renomme) tout les fichier lib*.a et *.so (sauf les .so nécessaires à gcc) de ton système et tu essais de compiler, tu verras ce qu'il manque.
Typiquement, à la fin de l'édition des liens, chaque fonction reçoit une adresse unique au sein du programme, alors que dans les .o c'est aranger autrement.
Tu peux aussi essayer de faire un petit diff entre un .o et la version exécutable. (regarde avec un éditeur hexadécimal)
Oui, en effet l'édition des lien modifie un peu les fichiers et rajoute un en-tête particulier pour que ce soit un fichier exécutable. En plus, il me semble que par défaut tu lie toujours avec la libc. Un truc simple pour tester, tu supprimes (enfin, déplace ou renomme) tout les fichier lib*.a et *.so (sauf les .so nécessaires à gcc) de ton système et tu essais de compiler, tu verras ce qu'il manque.
Typiquement, à la fin de l'édition des liens, chaque fonction reçoit une adresse unique au sein du programme, alors que dans les .o c'est aranger autrement.
Tu peux aussi essayer de faire un petit diff entre un .o et la version exécutable. (regarde avec un éditeur hexadécimal)