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.

[参考译文] AM2634:不同 PC 构建的 appimage 文件的差异

Guru**** 2551110 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1273668/am2634-differences-on-appimage-files-built-by-different-pcs

器件型号:AM2634

我们在由不同的 PC 构建的.appimage 中存在差异,从相同的源开始,使用相同的 Release 配置分析生成的.mapfile,我们可以看到,几个文件的某些部分存在差异。 特别是、我看到其中之一是 ti_drivers_open_close.o 的.rodata.str1.1段。 该文件是由 syscfg (v 1.15.0)自动生成的文件。

为什么存在这些差异? 我们如何避免这种情况呢?

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

    亚历山德罗,该主题预计已收到通知,并将很快回复。

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

    我不知道为什么...

    Unknown 说:
    一些文件的某些部分存在差异

    ...发生。  但我可以指导您找到根本原因。   

    添加了部分 .rodata.str1.1 包含该文件的常量字符串。  因此、隔离和比较这些灯串。   

    实现  TI_DRIVERS_OPEN_CLOSE.c ,更改版本以便 -g (发出调试信息)不被使用、并且 -S 代替了 -c 。  这意味着以赋值的文件 -o 不是目标文件、而是包含编译器生成的汇编代码的文本文件。  使用类似于...的命令搜索此文件中的字符串。

    $findstr ".asciz" ti_drivers_open_close.o
     

    在两台 PC 上执行此任务。  比较每个 PC 上生成的文件的字符串。  根据您看到的差异反向工作。

    谢谢。此致、

    -乔治

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

    我发现了问题。

    一些驱动程序具有一个 DebugP_ASSERT 宏命令、可将其扩展

    #define DebugP_assert(expression) _DebugP_assert(expression, __FILE__, __FUNCTION__, __LINE__, #expression)

    因此、每个 PC 都将为__FILE__符号使用完整路径。

    我们 将尝试在发布配置中禁用调试断言。

    谢谢

    -亚历山德罗