This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] 编译器/TMS320C6678:使用最新的编译器生成不同的二进制文件

Guru**** 2540720 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/578303/compiler-tms320c6678-using-latest-compiler-produces-binaries-that-are-not-identical

部件号:TMS320C6678

工具/软件:TI C/C++编译器

我已阅读 https://e2e.ti.com/support/development_tools/compiler/f/343/t/50.5064万中的帖子 并尝试了其中的所有解决方案:

1.关闭所有优化

2.升级我的编译器(使用7.4 .11,7.4 .20和8.1 .3)

3.我甚至尝试排除调试符号

但是,当我清理和编译代码时,如果多次比较生成的二进制代码,它们就会有所不同。

我正在跑步

CCS 5.3 .0.0.009万

XDC 3.23 .04.60

并尝试了上述所有3个编译器。

我还能做什么? 我错过了什么?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Casey Gregoire 说:
    当我清理和编译我的代码时,如果多次比较生成的二进制代码,它们会有所不同。[/QUOT]

    这种比较到底是如何进行的?  您看到的哪些内容让您认为存在差异?

    谢谢,此致,

    -George

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我的源控制系统(Subversion)和文件比较工具(win merge)都声称文件不同。 如果您可以建议我尝试其他工具,因为WIN合并无法真正处理这些二进制差异,它只能告诉我它们存在。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    这种比较是不正确的。

    大致说来,可执行文件有两个内容。  载入目标系统的原始位以及有关可执行文件的附加元信息。  元信息的示例包括符号表和调试信息。  对于连续的构建,原始位是相同的。  但元信息可以合法地改变。  元信息包括生成的时间等。

    更好的比较工具是 cG_xml包中的objdiff。  默认情况下,它将忽略元信息。

    谢谢,此致,

    -George

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    大多数构建工具都允许我创建完全相同的二进制文件,即使我必须打开选项,如‘排除元数据’,这不是一个选项吗? 这是我们的代码库中唯一无法实现的部分。我们生成的所有其他可执行文件,库和脚本都可以从源位一个位重新生成。 是否有办法删除此日期和时间元数据?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Casey Gregoire 说:
    是否有办法删除此日期和时间元数据?[/QUOT]

    很遗憾,不是  但您可以与objdiff实用程序(在我的上一篇文章中提到)进行比较。

    谢谢,此致,

    -George