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.

[参考译文] CODECOMPOSER:不同构建机器的项目.out 文件不同

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/1437277/codecomposer-project-out-files-differ-between-build-machines

器件型号:CODECOMPOSER

工具与软件:

问题:两个开发人员获得相同的二进制.out 文件在构建项目时、第三个开发人员获得不同的.out 文件(文件较小)。 但都使用相同的 CCS 版本、软件包、编译器版本等

CCS 版本:12.8.1
MSPM0 SDK 版本:2.1.0.03。  
编译器:GNU 9.2.1 (FSF)

我自己和 Developer2获得二进制相同的.out 文件、但 Developer3获得不同的.out。 在进一步研究差异时、Developer3的 CCS 似乎生成了不同的 Makefile、为什么假设我们都从代码的 Git 存储库导入相同的 CCS 工程并使用相同的 CCS 版本等? 很明显、这里有一些不同的东西、但我现在花了很长时间与 Developer3一起查看他们的系统、尝试确定任何差异。 唯一让我印象深刻的是、Developer3的 CCS 安装目录是 C:\ti\ccs1281、他的 GCC 9.2.1位于不同的目录中、Dev2和我自己有 C:\ti\ccs1280。 但是、我们已确认全部使用 CCS v12.8.1。

我已要求 Developer3将他的整个项目压缩起来、以便与我的本地目录进行比较、只有文件差异:
release.out
release.map
Makefile
subdir_rules.mk

请参阅下面的以了解实际文件差异。 每个源文件和.project、.cproject 和.ccsproject 都是相同的。 那么他的 CCS 如何/为什么会生成不同的 makefile 文件?!  

e2e.ti.com/.../file_5F00_diffs.zip

感谢您的任何帮助!


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

    您好!

    我已经要求开发者将他的整个项目压缩起来、以便我与我的本地目录进行比较、唯一的文件差异是:
    release.out
    release.map
    Makefile
    subdir_rules.mk

    请参阅下面的以了解实际文件差异。 每个源文件和.project、.cproject 和.ccsproject 都是相同的。 那么他的 CCS 如何/为什么会生成不同的 makefile 文件?!  [报价]

    您提到的所有文件还可以包含特定于开发人员本地环境的信息。 此类信息包括源和各种实用程序的文件路径信息、工作区位置、时间戳等 所以除非每个人的 PC 都安装在相同的目录中,并且使用相同的用户名和在相同的时间内构建,否则会有一些差异。 上述文件都是构建过程生成的文件。 这些文件通常不受版本控制。

    每个源文件和.project、.cproject 和.ccsproject 都是相同的。 [报价]

    这些文件应是持久的。 应将以下文件检入到版本控制中:

    https://dev.ti.com/tirex/explore/node?node=A__AFwtNnyed7LJCr63zDn5xw__ccs_devtools__FUz-xrs__LATEST

    谢谢

    Ki

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

    Ki、感谢您的答复。 然而、 TI 建议在代码库中包含的唯一项、我之前没有、就是.settings 目录。 我添加了并请求 Developer3重新克隆并构建工程、结果与上次相同。 您是否认为.out 文件对于环境而言是唯一的? 如果是这种情况、如何才能确认两个编译系统编译到相同的结果? 我添加了一个编译后处理脚本、用于将.out 转换为.bin、而不同系统之间的编译后处理脚本也确实存在差异。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您是说.out 文件对环境来说将是唯一的吗?

    当然可以。 .out 文件是目标上加载的目标代码二进制文件与调试器使用的调试符号的组合、调试器用于查看源代码级调试(加载到主机 PC 上的 CCS 调试器中)。 后者包含各种信息、并且可能因其构建所处的环境而异、因为它包含源文件的路径信息、调试器在 CCS 中进行调试时需要这些源文件。

    如果是这种情况、如何确认两个构建系统编译成了相同的结果? [报价]

    请参阅此文章: https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/682645/compiler-tms570lc4357-best-practices-for-repeatable-binary-hex-builds

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

    明白了、因此无法确保 TI 产品上的编译输出相同。 有一个机会,他们可以生成相同的,这可能涉及使用相同的文件夹结构的所有涉及,但即使这样也没有保证。

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

    您好!

    我也花了相当多的时间在这类问题上:你可以看看这里: https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1095390/tda4vm-absolute-path-built-in-rodata-section-of-ti-kernel-freertos-components/4132380?tisearch=e2e-sitesearch&keymatch=%252520user%25253A351163#4132380

    对于我来说、CCS 的运行方式有问题、这是关于改变与项目构建方式相关的设置的问题。 (编译器、链接器设置)。 有时它不保存我在设置中更改的选项、有时仅部分保存。

    总的来说、我不再使用 CCS 作为开发工具、只用来调试项目。 这些工程现在由 cmake 生成、该配置是透明的、并且会检查到 git repos. 因此、不同 CCS 实例之间的构建选项不会再出现问题。 (提示:我假设 CCS 也仅使用 cmake 生成 makefile 以在内部编译工程。)

    尽管如此、您必须注意、TI 的某些库中使用了 C 宏、其中将编译机器的信息嵌入到二进制文件中。 (__文件_)

    此致、
    Thomas

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [报价 userid="351163" url="~/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/1437277/codecomposer-project-out-files-differ-between-build-machines/5517735 #5517735"]总的来说、我改用 CCS 作为开发工具、只用来调试项目。 这些工程现在由 cmake 生成、该配置是透明的、并且会检查到 git repos. 因此、不同 CCS 实例之间的构建选项不会再出现问题。 (提示:我假设 CCS 也仅使用 cmake 生成 makefile 以在内部编译工程。)[/QUOT]

    很遗憾在将 CCS 用作编译环境时听到您的困扰。 cmake 是一种受欢迎的环境、许多用户都使用它在 CCS 环境外部进行编译、而只使用 CCS 进行调试(如规划中所示)。  

    CCS 不使用屏蔽罩下的 cmake。 CDT 用于从工程生成 makefile、然后调用 gmake:

    https://software-dl.ti.com/ccs/esd/documents/users_guide/ccs_project-management.html#build-rebuild-project

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

    谢谢托马斯。 我很可能也会沿着这条路走下去、您的信息将会非常有用!