器件型号: TMS320F280039C
我正在创建新主题、因为我无法再回复上一个问题帖子、并且原始问题尚未解决。
此外、在我试图弄清楚如何在这个旧主题中做出回应时、不小心点击了“举报为辱骂性“按钮、对此我深表歉意。
对于问题:
1.很抱歉、我无法提供我们的工程文件用于您的分析。 如果您需要、我只能共享与源代码无关的配置文件或其他文档。
2.我不能将该变量更改为唯一、因为这是我们在实际项目实现中使用的确切体系结构。
那么、是否有任何替代解决方案可以解决此错误?
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.
器件型号: TMS320F280039C
我正在创建新主题、因为我无法再回复上一个问题帖子、并且原始问题尚未解决。
此外、在我试图弄清楚如何在这个旧主题中做出回应时、不小心点击了“举报为辱骂性“按钮、对此我深表歉意。
对于问题:
1.很抱歉、我无法提供我们的工程文件用于您的分析。 如果您需要、我只能共享与源代码无关的配置文件或其他文档。
2.我不能将该变量更改为唯一、因为这是我们在实际项目实现中使用的确切体系结构。
那么、是否有任何替代解决方案可以解决此错误?
Yuan、
我正在为跟踪此问题创建一个 bug、但重现问题。
对于链接器错误 10478 问题、两个文件名相同但文件夹不同的源文件中是否也存在同名静态变量的两个实例?
或者、两个具有不同文件名的不同源文件中是否存在同名静态变量?
关于权变措施、您可以重命名其中一个变量以避免重复输出。
或使用__attribute__((update)) 标记一个变量。 但这意味着该变量不会被保留、而会被移动到.TI.update 段。 根据变量在 LFU 热切换时的状态、您可能需要在调用_TI_auto_init_warm () 后手动更新它、这只会根据源代码值而不是最新的运行时值进行初始化。
注意:我只能在两个同名文件中再现同名静态变量的情况。 如果是这种情况、则 LFU 已经无法支持、因为当前实现无法区分每个同名文件的编译地址、说明其在参考可执行文件中匹配的地址。 它应该会发出如下所示的警告:
warning #30017-D: For lfu compile of "test1.c", the reference executable's symbol table has multiple file entries with same file name. If two same-name files have duplicate-same-name static variables that are lfu "preserved", then the compiler will assign both static variables with the same address. This could result in linker placement errors.
尊敬的 GregM:
两个具有不同文件名的不同源文件中的同名静态变量。
我们 在 1.c 文件 s_pTimeTickVar =&g_tTimeTickVar 中定义静态 TIMETICK_VAR_T *s_pTimeTickVar;
并 在 2.c 文件 s_pTimeTickVar =&g_tTimeTickVar 中定义静态 TIMETICK_VAR_T *s_pTimeTickVar;
并 在 3.c 文件 s_pTimeTickVar =&g_tTimeTickVar 中定义静态 TIMETICK_VAR_T *s_pTimeTickVar;
...
和在 12.c 文件中定义 extern TIMETICK_VAR_T g_tTimeTickVar。
我们将采用这种方法来引用在不同.c 源文件中的特定文件中定义的全局变量。因此、我们无法轻松修改某个变量、因为该变量在许多位置被引用。 此外、在 LFU 过程中应保留这些变量。
......