मैं एक बहुत विनियमित वातावरण में काम करता हूं जहां हमें समान बाइनरी इनपुट का उत्पादन करने में सक्षम होना चाहिए, हर बार उत्पाद बनाने के लिए एक ही स्रोत कोड दें। वर्तमान में हम जी ++ के एक प्राचीन संस्करण का उपयोग करते हैं जिसे परिणामस्वरूप द्विआधारी में दिनांक/समय जैसी कुछ भी लिखने के लिए तैयार नहीं किया गया है जो बिल्ड से निर्माण में बदल जाएगा, लेकिन मैं g ++ 4.7.2 को अपडेट करना चाहता हूं। क्या किसी को पैच के बारे में पता है, या मुझे कोड कोड के दो समान टुकड़े लेने और समान बाइनरी आउटपुट बनाने के लिए क्या चाहिए, इसके बारे में सुझाव हैं?जी ++ के साथ निर्धारक बाइनरी आउटपुट कैसे उत्पन्न करें?
11
A
उत्तर
6
हम भी बिट-समान पुनर्निर्माण पर निर्भर करते हैं, और gcc-4.7.x का उपयोग कर रहे हैं।
PWD=/proc/self/cwd
सेट करने और -frandom-seed=<input-file-name>
का उपयोग करने के अलावा, कुछ हद तक पैच हैं, जो svn://gcc.gnu.org/svn/gcc/branches/google/gcc-4_7
शाखा में पाए जा सकते हैं।
5
डेबियन Reproducible builds project डेबियन पैकेज बाइट-बाय-बाइट को मानकीकृत करने का प्रयास करता है, और हाल ही में Linux Foundation grant मिला है।
हालांकि इसमें संकलन से अधिक शामिल हो सकता है, आपको इसे देखना चाहिए।
यह भी मुझे this article की ओर इशारा किया है, जो क्या @Employed कहा करने के लिए निम्नलिखित बातों को जोड़ता है:
- एक निश्चित फ़ोल्डर में स्रोत डाल (जैसे
/tmp/build
)__FILE__
- ,
__TIME__
से निपटने के लिए ,__TIMESTAMP__
:- libfaketime: https://github.com/wolfcw/libfaketime
- ओवरराइड टी
-D
-Wdate-time
या-Werror=date-time
साथ नली मैक्रो: चेतावनी दी है या असफल रहे हैं या तो__TIME__
,__DATE__
या__TIMESTAMP__
प्रयोग किया जाता है। लिनक्स कर्नेल 4.4 डिफ़ॉल्ट रूप से इसका उपयोग करता है।
- उपयोग
D
झंडा, या टिकटों -fno-guess-branch-probability
साफ करने के लिए https://github.com/nh2/ar-timestamp-wiper/tree/master का उपयोग करें: older manual versions कहना है कि यह गैर नियतिवाद, लेकिन not anymore का एक स्रोत है। सुनिश्चित नहीं है कि यह-frandom-seed
द्वारा कवर किया गया है या नहीं।
__DATE__
के लिए
ar
साथ
Buildroot एक BR2_REPRODUCIBLE
विकल्प जो पैकेज स्तर पर कुछ विचार दे सकता है, लेकिन यह इस बिंदु पर पूरा नहीं हुआ है।
संबंधित धागे:
संबंधित मुद्दे
- 1. पूर्ण बाइनरी आउटपुट
- 2. जावा में फ़ाइल में बाइनरी डेटा कैसे आउटपुट करें?
- 3. जी: बनाम जी शामिल करें:
- 4. क्या पिकलिंग प्रक्रिया निर्धारक है?
- 5. स्कैला चेक परीक्षण निर्धारक
- 6. कस्टम जेएसपी टैग द्वारा उत्पन्न आउटपुट को कैसे छोटा करें?
- 7. संपत्ति निर्धारक
- 8. ggplot2 के साथ एक हीटमैप कैसे उत्पन्न करें?
- 9. PHP में ऑटोफिल्टर के साथ एक्सेल फ़ाइल कैसे उत्पन्न करें?
- 10. बाइनरी फ़ील्ड के साथ कैसे चयन करें? (php, mysql)
- 11. शून्य के साथ बाइनरी स्ट्रिंग कैसे पैड करें?
- 12. पायथन में ftplib के साथ बाइनरी फ़ाइल कैसे अपलोड करें?
- 13. प्ले 2.0 के साथ बाइनरी कैसे प्रस्तुत करें?
- 14. निर्धारक फ़्लोटिंग पॉइंट और .NET
- 15. निर्धारक मतलब क्या है?
- 16. एपीआई दस्तावेज कैसे उत्पन्न करें
- 17. रिटर्निंग निर्धारक वेक्टर - मैटलैब
- 18. द्विआधारी में int को आउटपुट कैसे करें?
- 19. ffmpeg के साथ खंडित mp4 आउटपुट कैसे करें?
- 20. बाएं जुड़ने के साथ आउटपुट क्लॉज, कैसे करें?
- 21. grep -c के साथ प्राप्त आउटपुट को कैसे सॉर्ट करें?
- 22. नॉर्वेसेट के साथ कवरेज एक्सएमएल आउटपुट कैसे करें?
- 23. एनम प्रकार फ़ील्ड के साथ मॉडल कैसे उत्पन्न करें?
- 24. जावास्क्रिप्ट के साथ नकली पोस्टबैक कैसे उत्पन्न करें?
- 25. cmake के साथ स्रोत में हेडर कैसे उत्पन्न करें?
- 26. SWIG के साथ एक क्रॉस प्लेटफ़ॉर्म इंटरफ़ेस कैसे उत्पन्न करें?
- 27. हाइड के साथ नई सामग्री कैसे उत्पन्न करें?
- 28. वैकल्पिक रंगों के साथ एक जेलिस्ट कैसे उत्पन्न करें
- 29. टेस्टएनजी में विभिन्न नामों के साथ परीक्षण कैसे उत्पन्न करें?
- 30. PHP के साथ हल्का/गहरा रंग कैसे उत्पन्न करें?
पीडब्ल्यूडी =/proc/self/CWD क्या करता है? –
@StevenBehnke हम डीबग जानकारी के साथ निर्माण करते हैं। लिनक्स पर, जीसीसी वर्तमान संकलन निर्देशिका के रूप में 'पीडब्ल्यूडी' (जो कि वर्तमान कार्यशील निर्देशिका में खोल सेट करता है) रिकॉर्ड करता है। चूंकि हम निर्माण को निष्पादित करने वाली निर्देशिका के बावजूद बिट-समान बनना चाहते हैं, इसलिए हम अनुमानित मूल्य पर 'पीडब्ल्यूडी' सेट करते हैं। –
जीसीसी में यादृच्छिकता के मुख्य अनुप्रयोग क्या हैं? –