Linux/GCC:是否有一种方法可以检查构建是否与其他机器上的前一个机器相同

Linux/gcc: Is there a way to check if a build is identical to a previous one on a different machine?

本文关键字:机器 是否 其他 一个 构建 GCC 一种 Linux 方法 检查      更新时间:2023-10-16

方案:应该在新机器上重复进行C 项目的构建(在Linux下)。

如果使用非常相同的GCC版本进行构建:构建输出(二进制)是否相同?还是二进制中包含的时间戳,路径或其他信息会使它们与众不同?如果输出不完全相同:是否可以以一种方式比较输出,以查看二进制文件是否"功能"相同?IE。可以称为工具,只需比较二进制中的实际代码(没有元数据,例如调试信息)?

动机:我必须准备一个干净的新Linux系统,必须在该系统上构建软件系统(由其他人开发,称为X)。为了构建该软件,我将获得带有构建脚本,makefiles等的源树。现在,我必须检查构建输出与X(并在其系统上构建)提供的最后一个构建相同。我需要这样做以确保将要移交的源与用于构建我们从x。

以二进制形式获得的最后版本相同。

如果使用非常相同的GCC版本用于构建:构建输出(二进制文件)是否相同?

更改的是CPU,而不是GCC的版本及其静态链接所做的。我相信您在这里寻找谎言的答案。

它基本上将道琼斯指向"依赖"。引用RICI的链接答案:

除非CPU相似(即使那样,也可能是可能的)

二进制文件可能会有所不同。

和Oliv所说的那样,objdump也是比较差异的好方法。

相关文章: