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.

[参考译文] 编译器/C2000-CGT:项目构建在 Code Composer 5和 Code Composer 6环境中不会产生相同的二进制文件

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/782237/compiler-c2000-cgt-project-build-does-not-produce-same-binary-in-code-composer-5-and-code-composer-6-environnements

器件型号:C2000-CGT
主题中讨论的其他器件:TMS320F2812

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

您好!

我们的环境:TMS320F2812 DSP、CGT 6.2.0和 Code Composer Studio 版本5和6

将 code composer 5项目导入到 code composer 6环境后、编译操作不会产生 相同 的输出(ASCII S2输出不同)。

如果我们进一步查看生成的 ASM 或 MAP 文件、生成的代码似乎可以识别、但 某些 文件中的函数放置方式不同(请参阅下面的捕获)

工程从 基准发出、导入过程不发出警告、代码生成工具版本相同(6.2.0)、编译器选项相同(在 ASM 生成的标头中验证)

我们没有可用的 code composer 5环境、因此无法复制初始生成。

是否存在构建器问题? Makefile 生成问题? 初始 CCS 5编译参数可能已被 CCS 错误导入或错误导入? 它们如何影响文件内的函数顺序编译?

我还尝试使用 链接器的"-preferred_order"参数来恢复初始顺序、但没有成功。 此选项没有太多的文档。

是否有人遇到相同的问题?

提前感谢、

David Baltaro


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

    [引用 user="David Baltaro"]将 code composer 5项目导入到 code composer 6环境后,生成操作不会生成 相同 的输出

    CCS 或编译器不支持这一要求。  它没有记录行为。  我们没有针对它的测试。  话虽如此、我们将尝试回答您的问题。

    David Baltaro 说:
    编译器选项相同(在 ASM 生成的标头中验证)

    您的编译器选项必须相同、否则您可能无法像以前那样接近。  同样、我希望让您(以及阅读此线程的其他人)知道、这不足以证明编译器选项匹配。  编译器确实在汇编代码中包含注释、这些注释显示了使用的关键编译选项。  但是、它并不显示所有构建选项。  为此、您需要保留构建日志。

    我不知道为什么 CCSv6下的编译略有不同。  一个猜测... 链接器看到所有内容、尤其是目标文件和库的顺序必须相同。  更改 CCS 版本可能会导致链接器看到这些输入的顺序稍有不同。  因为...

    [引用 user="David Baltaro"]我们没有可用的 code composer 5环境

    (笑声) 我怀疑无法知道如何在 CCSv5下调用链接器。

    谢谢、此致、

    乔治

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

    我在当前 PC 上重新安装了 code composer 5环境、幸运的是、我检索了一个包含原始编译文件、.map、二进制文件和编译日志的旧项目。

    但遗憾的是,也有同样的问题:干净的步骤、编译参数、链接:所有都是诱人的。 在超过100个的5个文件中、函数顺序是不同的。

    以前环境与实际环境之间的其余差异是系统版本 Windows XP 32位与7 64位之间的差异。
    它对构建过程有影响吗?

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

    [引用 user="David Baltaro"]并且在5个超过100的文件中,函数顺序不同。

    就在这些文件中、编译器生成的函数的顺序是不同的?  如果正确、则差异会由于编译器而不是链接器而出现。

    [引用 user="David Baltaro">以前环境与实际环境之间的其余差异是系统版本 Windows XP 32位与7 64位。
    它对构建过程有影响吗? [/报价]

    如果它确实起作用、我将无法解释它。   

    6.2.0版编译器使用了大约6年。  我有一个模糊的存储器、其中包含一些有关编译器优化器阶段中的不稳定类型的错误报告。  我通过我们的错误数据库进行了搜索、但找不到任何内容。 有这样一个编译器错误仍然是合理的猜测、并且已经修复。

    什么是不稳定类型?  在排序时、您需要对两个东西进行同等比较时发生的情况制定"稳定"的策略。  否则、随机选择会导致该类型"不稳定"或不可预测。  当发现此类类型时、它们会被视为错误并被修复。

    谢谢、此致、

    乔治

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    好的、
    感谢您的解释。
    此致、
    David
x 出现错误。请重试或与管理员联系。