期望在两个相同平台上构建两个共享库是否合理?
Is it reasonable to expect two shared libraries built on two identical platforms?
如果我构建相同的源代码,链接到相同库的相同版本,具有相同的工具链(相同的编译器,链接器等,GCC 4.4),具有相同操作系统的相同版本(在我的情况下为Centos 5 Linux),但在两台不同的机器上;
假设生成的二进制文件应该相同是否合理?
这背后的上下文是我的代码具有"未定义的行为",它"适用于"一种配置而不是另一种配置,显而易见的答案是解决这个问题,但我有兴趣知道我生成的二进制文件的假设是否相同是正确的。
我注意到大小有几百字节的差异,使用"nm"命令显示的符号的位置略有不同,即使符号相同。
通常,我希望日期和/或元数据即使在同一主机上的构建之间也会略有不同。
您还忽略了编译器标志(例如,来自命令行的优化和#define
)。
然而,我最初怀疑这些文件应该具有相同的大小,这使我们得出结论,两个系统的某些内容并不相同。最有可能的候选者是系统标头(操作系统安装中只有一个根级功能可能会导致这些文件的完全不同的视图)和任何依赖库。
您可以通过使用 g++ -E
或类似方式进行预处理来检查标头是否相同。您还可以按照库路径进行操作,并确认每个系统上链接到的文件相同。
相关文章:
- 如何检查两个 std::向量在小于 O(n) 的时间复杂度内是否相等
- 是否可以在 OpenGL 中的同一调用中呈现两个具有不同索引起点的不同缓冲区?
- 检查两个节点在子节点上是否具有相同状态的更优雅的方法
- 如何巧妙地编写两个函数——一个用于检查是否存在解决方案,另一个用于获取所有解决方案
- 使用XOR查找O(n)-解决方案中的两个字符串是否为变位符
- 给定一个大小为 N 的数组 S,检查是否可以将序列拆分为两个序列
- 具有相同特征的两个对象是否只在内存中存储一次?无论定义它们的函数是什么,都是不同的
- 如何更好地检查两个 char 变量是否在一组值中?
- 是否有一种标准方法来计算两个 asctime() 值之间的天数
- 是否可以使用非常量指针调用非常量函数,以及当两个unique_ptrs指向同一个对象时程序的行为方式?
- 检查两个模板参数是否相同
- 是否可以在 for 循环中添加两个浮点数?
- 是否允许三元运算符在C++中计算两个操作数?
- 使用 SET(C++) 检查两个给定字符串是否是字谜时出现运行时错误
- 使用 std::vector::swap 方法在C++中交换两个不同的向量是否安全?
- 检查两个向量是否并行的最有效方法
- 检查两个图是否为补码的功能
- gtest:检查字符串是否等于两个字符串之一
- 如何在c/c++中检查两个任意内存范围是否重叠
- 图问题:找出两个节点是否在每个节点的O(1)时间和O(2)存储中共享同一分支