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.

[参考译文] CCSTUDIO-THEIA:C29 链接器调用问题

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1599239/ccstudio-theia-c29-linker-invokation-issue

部件号:CCSTUDIO-THEIA

TI 团队大家好、  

按照 Alan 的建议,在使用 LTO 时分开编译和链接阶段,我们遇到了以下问题。 编译使用-c 标志完成、该标志会生成所需的目标文件。 之后通过 cmd.exe、我们会调用链接器。 所有需要的文件都收集在一个文件夹中:从源代码生成的目标文件、从 bitfield _structs.h/.c 生成的目标文件、drivelib.lib、sfo.lib 和链接器 cmd 文件。  

c29clang *.o driverlib.lib sfo.lib shared_linker.cmd   

结果是以下错误:由__attribute__((ramfunc) 或生成的“.TI.ramfunc"段“段
  --ramfunc=on 需要一个段规范才能运行。

我们认为这会产生误导、因为 TI.ramfunc 在以下段中定义:

#ifdef BOOTLOADER
   .TI.ramfunc   : { -l F29H85x_NWFlashAPI_v21.00.00.00.lib } LOAD=FLASH_PRGM, RUN=RAM_LPA_CPU1, table(BINIT), palign(16)
#else
    .TI.ramfunc   : {} LOAD=FLASH_PRGM, RUN=RAM_LPA_CPU1, table(BINIT), palign(16)
    .TI.ramfunc   : {} > RAM_LPA_CPU1, table(BINIT), palign(16)
#endif

问题是:链接器调用是否正确、或者是否 需要添加某些选项?

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

    请考虑不要从头开始创建您自己的解决方案。  请获取  适用于您的特定器件的 F29 SDK(软件开发套件)。  获取其中一个工作示例。  然后利用这种经验。  此外、它还显示了链接器的通常使用方式、典型链接器命令文件中有什么内容等   

    如果 SDK 中的链接器命令文件令人困惑、请阅读 链接器命令文件入门 这篇文章来进行说明。

    关于 LTO ...请考虑在不使用 LTO 的情况下使您的系统正常工作。  然后添加到 LTO 中。

    谢谢。此致、

    -乔治