gpt4 book ai didi

gcc 输出的目标文件是否可以在具有相同选项的相同源的编译之间变化?

转载 作者:太空狗 更新时间:2023-10-29 15:08:16 25 4
gpt4 key购买 nike

目标文件(C 语言)的 gcc 输出是否因编译而异?没有具体时间信息,编译选项或源代码没有变化。链接库和环境变量也没有变化。这是一个 VxWorks MIPS64 交叉编译器,如果有帮助的话。我个人认为不应该改变。但我观察到,有时随机生成的指令会发生变化。我不知道是什么原因。任何人都可以对此有所了解吗?

最佳答案

这是如何 build 的?例如,如果我构建了完全相同的 Linux 内核,它包含一个每次构建都会递增的计数器。 GCC 可以选择使用分析器信息来指导代码生成,如果分析信息发生变化,代码也会发生变化。

你分析了什么?生成的程序集,目标文件的 objdump 或可执行文件?你是如何比较不同版本的?您确定您查看的是可执行代码,而不是编译器/汇编器/链接器时间戳吗?

环境有什么变化吗?新库(和头文件/声明/宏定义!)?新的编译器、链接器?新内核(是的,一些头文件源自内核源代码并随内核一起提供)?

环境变量有任何变化(另一个用户进行编译,不同的机器,不同的网络连接提供不同的 IP 地址,使其进入构建)?

我会尝试详细跟踪构建过程(运行构建并捕获文件中的输出,然后再次执行;比较它们)。

完全迷惑...

关于gcc 输出的目标文件是否可以在具有相同选项的相同源的编译之间变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15109985/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com