2013-02-01 26 views
11

我在一個非常規範的環境中工作,我們需要能夠生成相同的二進制輸入,並在每次構建產品時提供相同的源代碼。我們目前使用古代版本的g ++,它已經被修補爲不會在生成的二進制文件中寫入任何類似日期/時間的文件,但是我會更新到g ++ 4.7.2。有沒有人知道一個補丁,或者有什麼我需要尋找採取兩個相同的源代碼段併產生相同的二進制輸出的建議?如何用g ++生成確定性二進制輸出?

回答

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分支中找到。

+0

是什麼PWD =的/ proc /自/ CWD嗎? –

+3

@StevenBehnke我們用調試信息構建。在Linux上,GCC將'PWD'(shell設置爲當前工作目錄)記錄爲當前編譯目錄。由於無論構建執行到哪個目錄,我們都希望構建的代碼是相同的,因此我們將'PWD'設置爲可預測的值。 –

+1

隨機性在GCC中的主要應用是什麼? –

5

Debian Reproducible builds project試圖逐個字節地對Debian軟件包進行標準化,最近得到了Linux Foundation grant

雖然這可能不僅僅是編譯,還應該看看它。

它還指出我this article,它增加了以下幾點到什麼@Employed說:

BuildrootBR2_REPRODUCIBLE選項,它可能會在包裝上水平的一些想法,但還遠遠沒有完成,在這一點上。

相關主題: