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.

[参考译文] TMS320F28075:使用完全相同的编译器和 IDE 版本构建 Linux 和 Windows 之间的差异

Guru**** 2405325 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1061397/tms320f28075-difference-between-linux-and-windows-builds-using-the-exact-same-compiler-and-ide-version

器件型号:TMS320F28075

我们基于 Linux 和 Windows 的构建会产生不同的二进制文件。 我们想知道这些分歧的原因是什么,是否有办法避免这些分歧。 这些构建在  两个操作系统上都使用 IDE 版本 CCS10.2.0.00009和 C2000编译器版本 ti-CGT-C2000_20.2.5.LTS。 使用使用相同 CLI 选项的 eclipse/c CLI 工具、这两个构建都是无头的。 它们都具有完全相同的代码库。

在 这个论坛主题上进行后续操作: https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/839609/ccs-rm46l852-the-hex-files-that-were-built-in-windows-and-linux-are-different、我们的.map 文件相对相似。 不可解释的一个区别是用于.const 段的填充。 为什么 Windows 决定进行对齐、而不是 Linux 端。   

.out 文件也在多个位置上散布着类似以下内容的差异。 什么会导致这两个构建之间的字节不同?  

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

    我想了解.const:.string 段为什么长度不同。  运行与此命令类似的命令...

    dis2000 --all file.out > file_dis.txt

    该命令是独立的反汇编器。  它与编译器 cl2000位于同一目录中。  在两个.out 文件上运行它。  将反汇编器输出文件命名为类似于 file_linux_dis.txt file_windows_dis.txt 的文件。  然后比较从地址0xb000开始的内容。  如果您无法确定差异的原因、请将文件压缩在一起并将其附加到下一篇文章中。

    谢谢、此致、

    乔治

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

    谢谢、对.out 文件的反汇编大有帮助。 我们正在构建以字符串形式存储的构建和硬件信息、它们上的时间戳自然会有所不同。 .out 文件的随机字节在这里和那里仍然不同、但.bins、.map 和反汇编器转储现在在两个操作系统构建之间是完全相同的。

    此致、