gcc -frandom-seed

-frandom-seed=string
     This option provides a seed that GCC uses when it would otherwise
     use random numbers. It is used to generate certain symbol names
     that have to be different in every compiled file.  It is also used
     to place unique stamps in coverage data files and the object files
     that produce them. You can use the -frandom-seed option to produce
     reproducibly identical object files.

     The string should be different for every file you compile.

http://gcc.gnu.org/onlinedocs/gcc-4.8.0/gcc/Debugging-Options.html#Debugging-Options

 相同源码、相同编译器的两次编译结果并不是binary identical的,这是因为编译器的部分功能依赖于随机输入(比如生成一些唯一的symbol,一个例子是C++中anonymous namespace在编译的时候要生成一个随机的symbol)

I have been looking at how to make binary reproducible builds in our 
project using gcc. It turns out that gcc gives functions in anonymous 
namespaces symbol names that are part randomized. If I compile our 
project with -frandom-seed=<some value> the random part of the symbol 
name will be the same each compile. The man page of gcc tells me that I 
need to use a different value for -frandom-seed for each file I compile. 

 

当然还有一个原因可能是源码本身有hack,比如__DATE__...

原文链接: https://www.cnblogs.com/qsort/p/3202650.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    gcc -frandom-seed

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/96622

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月10日 上午3:47
下一篇 2023年2月10日 上午3:48

相关推荐