代码之家  ›  专栏  ›  技术社区  ›  Rob Wells

Solaris cc是否在可执行文件中嵌入了不同编译的不同信息?

  •  1
  • Rob Wells  · 技术社区  · 15 年前

    G'day,

    这在VC++中曾经被问过,但我对Solaris的答案很感兴趣。

    我正在编译并链接以下简单的C代码:

    #include <stdio.h>
    
    int main() {
        printf("Hello world!\n");
        return 0;
    }
    

    使用命令:

    cc -o hello1 hello.c
    

    这样做几次,得到可执行文件hello2和hello3。这是在同一台机器上、同一个编译器上、同一个目录中、不同的时间完成的。

    有人知道cc在可执行文件中嵌入了什么使它们不同吗?时间戳?

    编辑: 按照Chris下面的建议剥离可执行文件,使diff将两个可执行文件报告为相同。

    干杯,

    2 回复  |  直到 14 年前
        1
  •  2
  •   Chris Quenelle    15 年前

    如果您在这两个二进制文件上使用“od-c”,然后使用并行的diff程序,您可以了解它们的区别。在过去,当我调查Sun编译器时,它通常是一个日期字符串。您还可以尝试剥离可执行文件,看看这是否会删除其中存在差异的ELF部分。

        2
  •  1
  •   Russell Newquist    15 年前

    如果您使用完全相同的源代码,并使用Sun的编译器编译两次,您将 获取两个完全相同的二进制重复文件。会有一些细微的差别。据我所知,这主要是关于日期/时间的问题。