Linux/GCC:是否有一种方法可以检查构建是否与其他机器上的前一个机器相同
Linux/gcc: Is there a way to check if a build is identical to a previous one on a different machine?
方案:应该在新机器上重复进行C 项目的构建(在Linux下)。
如果使用非常相同的GCC版本进行构建:构建输出(二进制)是否相同?还是二进制中包含的时间戳,路径或其他信息会使它们与众不同?如果输出不完全相同:是否可以以一种方式比较输出,以查看二进制文件是否"功能"相同?IE。可以称为工具,只需比较二进制中的实际代码(没有元数据,例如调试信息)?
动机:我必须准备一个干净的新Linux系统,必须在该系统上构建软件系统(由其他人开发,称为X)。为了构建该软件,我将获得带有构建脚本,makefiles等的源树。现在,我必须检查构建输出与X(并在其系统上构建)提供的最后一个构建相同。我需要这样做以确保将要移交的源与用于构建我们从x。
如果使用非常相同的GCC版本用于构建:构建输出(二进制文件)是否相同?
更改的是CPU,而不是GCC的版本及其静态链接所做的。我相信您在这里寻找谎言的答案。
它基本上将道琼斯指向"依赖"。引用RICI的链接答案:
除非CPU相似(即使那样,也可能是可能的)
二进制文件可能会有所不同。
和Oliv所说的那样,objdump
也是比较差异的好方法。
相关文章:
- 是否可以执行存储在变量中的机器代码
- Linux/GCC:是否有一种方法可以检查构建是否与其他机器上的前一个机器相同
- C++标准是否需要二进制机器
- 是否可以将长长返回值分配给int64_t而不会丢失 64 位机器中的精度
- 在同一台机器上,是否保证两倍值的不精确性是一致的
- 在 32 位 Linux 机器中生成的预处理器指令列表与为 64 位 Linux 机器生成的预处理器指令列表之间是否有区
- 是否有编译器可以编译为机器代码的 C C++ C# 编译器
- C++是否可以自动访问机器中所有可用的内存
- 通过Powershell命令检查远程机器的操作系统类型是否为2008 R2
- 为C++中模板的所有实例生成的单个机器代码实例:它是否可行和/或可能
- 如何知道TCP连接是否存在于同一机器上的两个进程之间
- Boost.MPI /提升.进程间-如何检测进程是否在同一台机器上运行
- 如果机器立即崩溃,那么fflush()在将数据保存到磁盘方面是否与fclose()一样好?
- 是否有一个Windows c++ API来验证Windows用户名/域名是本地机器上的有效帐户(没有密码)
- 交叉编译:检查是否可以在64位机器上构建32位
- 是否有可能在一个Ragel文件中调用多台机器?
- c++中是否有API来查找机器的环回IP地址?
- 检查Windows机器是否可以作为RDP连接中的主机
- 当运行一个简单的单线程C++程序时,是否可以消除Linux机器的抖动
- 是否可以在多GPU机器上执行CUDA程序的多个实例