Ste*_*nke 14 c++ g++ deterministic
我在一个非常规范的环境中工作,我们需要能够生成相同的二进制输入,每次都可以为构建产品提供相同的源代码.我们目前使用的古老版本的g ++已被修补,不会在生成的二进制文件中写入任何类似日期/时间的内容,这些日期/时间会从构建更改为构建,但我想更新为g ++ 4.7.2.有没有人知道一个补丁,或者有什么建议我需要寻找两个相同的源代码并产生相同的二进制输出?
Cir*_*四事件 11
Debian Reproducible构建项目尝试逐个字节地标准化Debian软件包,最近获得了Linux Foundation授权.
虽然这可能不仅仅包括编译,但你应该看看它.
它还向我指出了这篇文章,它为@Employed所说的内容增加了以下几点:
/tmp/build
)中进行处理__FILE__
__DATE__
,__TIME__
,__TIMESTAMP__
:
-D
-Wdate-time
或-Werror=date-time
:如果使用或者使用过__TIME__
,则发出警告或失败.Linux内核4.4默认使用它.__DATE__
__TIMESTAMP__
D
标志ar
,或使用https://github.com/nh2/ar-timestamp-wiper/tree/master擦除邮票-fno-guess-branch-probability
:较旧的手动版本说它是非确定性的来源,但现在不再存在.不确定这是否包含在内-frandom-seed
.Buildroot有一个BR2_REPRODUCIBLE
选项,可以在包级别上提供一些想法,但目前还远未完成.
相关主题:
我们还依赖于位相同的重建,并使用gcc-4.7.x.
除了设置PWD=/proc/self/cwd
和使用之外-frandom-seed=<input-file-name>
,还有一些补丁,可以在svn://gcc.gnu.org/svn/gcc/branches/google/gcc-4_7
分支中找到.