我在一个非常规范的环境中工作,我们需要能够生成相同的二进制输入,每次都可以为构建产品提供相同的源代码.我们目前使用的古老版本的g ++已被修补,不会在生成的二进制文件中写入任何类似日期/时间的内容,这些日期/时间会从构建更改为构建,但我想更新为g ++ 4.7.2.有没有人知道一个补丁,或者有什么建议我需要寻找两个相同的源代码并产生相同的二进制输出?
在开发仅标头的库时,我想确保将给定的字符串嵌入使用标头的所有二进制文件中,即使编译器配置为优化未使用的常量,并且二进制文件也被剥离。
嵌入不应有任何副作用(除了使生成的二进制文件更大一点以外)。
我不知道人们将如何使用标题,但是
我的小尝试等于:
static char frobnozzel_version_string[] = "Frobnozzel v0.1; © 2019 ACME; GPLv3";
Run Code Online (Sandbox Code Playgroud)
...,但是在构建过程中很容易将其删除(由于实际未使用该字符串,因此对于优化编译器而言很容易被攻击)。
因此问题是:是否可以在包含给定标头的二进制文件中嵌入一个字符串,而该字符串不会被构建“发布”二进制文件的常规策略优化/删除?
我知道,任何使用该库的人都可以(手动)删除我输入的内容,但是让我们假设,人们只是按原样使用标题。
上下文:所涉及的标头是根据GPL发布的,我希望能够检查用户是否确实遵守了许可证。