2010-07-08 28 views
5

पर विभिन्न बाइनरीज़ मेरे पास विंडोज़ पर स्रोत-कोड बाइनरी के बारे में एक प्रश्न है।समान सरल स्रोत कोड, विंडोज

#include <stdio.h> 

int main() 
{ 
    printf("Hello, world!\n"); 

    return 0; 
} 

एक ही स्रोत कोड, मैं दो बार विंडोज (2008 Cmmand शीघ्र: "सीएल") पर संकलित है, लेकिन मैं विभिन्न binaries मिला है।

cl new.cpp 

क्या आप लोग मुझे बता सकते हैं कि क्यों, और इससे कैसे बचें?

+1

देखें http://stackoverflow.com/questions/1221185/ समान-निर्माण-पर-अलग-अलग सिस्टम और http://stackoverflow.com/questions/1277877/gcc-compiled-binaries-w- अलग-अलग - मूल रूप से कोई कंपाइलर गारंटी द्विआधारी समान नहीं होगी। –

+1

आपको समान होने के लिए बाइनरी की आवश्यकता क्यों है? – jalf

उत्तर

4

टाइमस्टैम्प पीई प्रारूप का हिस्सा है। रिहाई के रूप में संकलित करने के बावजूद आप हमेशा अलग-अलग मान प्राप्त करेंगे।

+0

मैं इससे कैसे बच सकता हूं? क्या टाइमस्टैम्प को हटाना संभव है? क्योंकि लिनक्स में, यदि मैं g ++/gcc का उपयोग करता हूं, तो अंतिम बाइनरी समान होती है। –

+2

@ पीटर: ईएलएफ (लिनक्स के निष्पादन योग्य प्रारूप) में टाइमस्टैम्प फ़ील्ड नहीं है। आउटपुट अलग होने पर कोई फर्क क्यों पड़ता है? –

+0

@ बिली: आप सही हैं कि ईएलएफ में टाइमस्टैम्प फ़ील्ड नहीं हो सकता है। यह बहुत ही परेशान है कि एक ही स्रोत कोड विभिन्न बाइनरी। –

1

क्या आपने रिलीज के रूप में संकलित किया था? डीबग में टाइमस्टैम्प हैं जो आपके एक्सई प्रति संकलन

+0

उपरोक्त निर्देशित संकलन बिल्कुल 1 बाइट का अंतर प्रदान करता है। एम्बेडेड टाइमस्टैम्प का एलएसबी। – mocj

1

मैं googled, और एक बीच में ही समाधान नहीं मिला:

DUMPBIN /RAWDATA MyApp.EXE > first.txt 
DUMPBIN /RAWDATA MyApp.EXE > second.txt 

http://support.microsoft.com/kb/164151 एक ही परियोजना की बाइनरी चित्रों की तुलना कैसे बनाता है

+0

आप निष्पादन योग्य दोनों में समान मूल्य पर टाइमस्टैम्प सेट करके इसके आसपास भी काम कर सकते हैं। –

संबंधित मुद्दे