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.

[参考译文] MSPM0G3507:Code Composer Studio 根据工作区的位置生成不同的二进制文件

Guru**** 2538950 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1567441/mspm0g3507-code-composer-studio-produces-different-binaries-depending-on-location-of-workspace

器件型号:MSPM0G3507


工具/软件:

我的团队正在尝试使用 Code Composer Studio 进行固件设计。 在这种协作中、我们所有人都需要在不同机器(或 Docker 容器)上编译代码时生成相同的二进制文件。

我发现生成的二进制文件因编译它的机器而异、即使 CCS、GCC 和 MSPM0 SDK 都有匹配的版本也是如此。  我运行了一个实验、打开了一个 Docker 容器、其工作区的文件路径与主机上的文件路径相同。  生成的二进制文件仍然不同、但与工作区位置不同时的二进制文件相比、它与原生生成的二进制文件有更多的共同之处。

具有不同工作区位置(注意右侧的红色条)

匹配工作区位置:

为什么主机的详细信息会将其转换为输出二进制文件?


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

    您好、Michael:

    由于编译器标志、编译器版本、优化级别和操作系统本身、二进制文件可能因机器而异。

    马修

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

    只需更改工作区和/或该计算机上的 SDK 的位置、即可在同一台计算机上生成不同的固件。 文件位置会以某种方式影响固件。  它与操作系统、编译器版本等无关

    在查看二进制文件的末尾时、这一点尤其明显、因为二进制文件包含所有所含 SDK 文件的文件位置。  如果没有其他信息、我会认为将有关本地计算机的文件结构信息发布到无需知道该信息的嵌入式设备是一个安全缺陷。

    为什么绝对文件位置对输出二进制文件有这样的影响?

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

    忽略。 我没有意识到这些是 ELF 文件、而不是原始二进制文件。 如果我使用 objcopy 连接它们、则会得到相同的二进制文件。