我重写产生了一些事情(共享/静态库,广口瓶,可执行文件,等)构建。问题出现了,是否有一种方法可以在不对结果软件进行完整的从上到下的测试的情况下验证结果在功能上是否相同。验证两个不同的构建的架构(一个在另一个的再写入)在功能上等同
但是,这被证明比我预料的要难得多。作为一个例子,我预计从相同的源(Sun Studio C++编译器)和命令行参数产生的两个对象的md5将具有相同的md5散列,但事实并非如此。我可以构建文件,重命名它,再次构建,并且它们具有不同的哈希值。
这一说...有没有办法做一个快速检查,以验证来自同一源代码树的独立的编译架构产生两个文件(例如,两个共享对象),在功能上等同?
编辑我很抱歉,我忽略提及这是一个调试版本...当调试标志不使用时,二进制文件是相同的,但他们已经默认使用调试标志多年他们的东西休息时删除调试标志(的我的部分原因重写的版本是采取特定的“功能”了构建,所以我们可以得到一些适当的测试准备)
我在这里看到的令人费解的事情是调试标志的使用改变了与另一个使用相同调试标志构建的另一个输出相关的输出。因此,我敢说,你的设置不能安全地测试,因为一个输入(一组源文件)不会始终产生相同的输出。 {例如。你的构建过程并不是“功能性”的,因为一个输入会产生多个输出。} – Shark8