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

为什么存在这些差异? 我们如何避免这种情况呢?
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.
我们在由不同的 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__符号使用完整路径。
我们 将尝试在发布配置中禁用调试断言。
谢谢
-亚历山德罗