Question

Y at-il un moyen de forcer le même code pour produire le même binaire dans Visual C ++? Désactivez l'horodatage dans le PE ou forcer l'horodatage dans le PE pour être une valeur fixe, autrement dit?

Était-ce utile?

La solution 2

Je suppose que vous pourriez écrire un utilitaire pour ouvrir le PE, définissez la somme de contrôle à 0, définissez l'horodatage à ce que vous aimez, recalcule la CIDE, puis l'écrire arrière. Ce serait bien s'il y avait un moyen officiel pour assurer la reproductibilité parfaite binaire, cependant.

Pour plus d'informations: http://msdn.microsoft.com/en-us/magazine/cc301805. aspx

Autres conseils

Il est non seulement un horodatage - il y a un GUID intégré utilisé pour la correspondance PDB - comme John Robbins explique .

Même au-delà, il n'y a aucun moyen de forcer le compilateur à générer des résultats cohérents, comme Jim Griesmer explique -

  

auteurs du compilateur sont beaucoup plus intéressés à générer le code fonctionne correctement et générer rapidement que faire en sorte que tout ce qui est produit est disposé de manière identique sur votre disque dur. En raison des nombreuses et les méthodes mises en œuvre et variées pour l'optimisation du code, il est toujours possible qu'une construction a fini avec un peu plus de temps pour faire quelque chose supplémentaire ou différent qu'une autre construction a fait. Ainsi, le résultat final pourrait être un ensemble différent de bits pour ce qui est de la même fonctionnalité.

Ainsi, la fonction et de l'ordre de section sont pas garantie à toujours commandé dans le PE résultant. Un exemple est le lien.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top