OVH Cloud OVH Cloud

compilation et commentaires

4 réponses
Avatar
JBB
Je compile avec gcc sous linux 2 fois la même programme en modifiant les
commentaires pres.
Apres un strip je calcul le md5 de mes 2 exe.
Je n'obtens pas le même, mes 2 binaires sont donc differents.
Pourquoi donc?

4 réponses

Avatar
Stephane Wirtel
JBB said the following on 20/01/2006 17:19:
Je compile avec gcc sous linux 2 fois la même programme en modifiant les
commentaires pres.
Apres un strip je calcul le md5 de mes 2 exe.
Je n'obtens pas le même, mes 2 binaires sont donc differents.
Pourquoi donc?


Bonjour,

Je ne me souviens pas que les commentaires sont intégrés dans le binaire du code.

Concernant la différence entre les deux fichiers, quelqu'un de plus en compétent
dans les compilateurs pourra certainement te répondre.

Stef

Avatar
Cyrille
Je compile avec gcc sous linux 2 fois la même programme en modifiant les
commentaires pres.
Apres un strip je calcul le md5 de mes 2 exe.
Je n'obtens pas le même, mes 2 binaires sont donc differents.
Pourquoi donc?


Je vois une explication possible, enfin ça dépend de la modification que
tu fais à tes commentaires.
En fait, si tu effaces plusieurs lignes de commentaires, les numéros de
ligne du code qui suit ne sont plus les mêmes, aussi il peut se passer
deux choses:
- Le programme est compilé avec des informations de débogage, contient
donc des numéros de lignes, qui sont changés par la modification des
commentaires.
- Le code utilise la macro __LINE__ directement ou indirectement (assert
l'utilise sur certains systèmes), ce qui modifie aussi le programme si
les numéros de lignes changent.

Si les modifications faites aux commentaires n'impliquent pas de
changement de numéros de ligne, on peut encore imaginer l'utilisation
des macros __DATE__ et __TIME__ (elles aussi peut-être utilisées par
assert) qui changent à chaque compilation, et modifient donc le
programme sans même une modification des commentaires.

--
Réhabilitez Garfieldd!
http://minilien.com/?HpC5r1qClU

Avatar
Frédéric Lachasse
"JBB" wrote in message
news:43d10daa$0$31965$
Je compile avec gcc sous linux 2 fois la même programme en modifiant les
commentaires pres.
Apres un strip je calcul le md5 de mes 2 exe.
Je n'obtens pas le même, mes 2 binaires sont donc differents.
Pourquoi donc?


La majorité des compilateur/linkeur que je connais mette la date de création
du module objet ou exécutable dans l'entête du fichier créé. Donc ils sont
toujours différents. Essaye de refaire une compilation sans même changer les
commentaires et compare les binaires pour voir...

--
Frédéric Lachasse - ECP86

Avatar
JBB
- Le code utilise la macro __LINE__ directement ou indirectement (assert
l'utilise sur certains systèmes), ce qui modifie aussi le programme si
les numéros de lignes changent.


Effectivement j'utilise __LINE__ pour faire des traces.
Je suis déçu de ne pas y avoir pensé moi même, mais j'ai pris la
mauvaise(?) habitude de poser rapidement mes questions dans les forums
de discussions plutôt que de réfléchir. C'est de la paresse intellectuelle.
En tout cas bravo et merci a Cyrille.
(et merci aux autres qui m'ont répondu).

JBB