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.

[参考译文] F28M35H52C:将.lib 作为工程文件并将其包含在链接器的文件搜索路径中(在工程属性中)之间的差异。

Guru**** 2535750 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/676720/f28m35h52c-differences-between-having-a-lib-as-a-project-file-and-including-it-in-the-file-search-path-of-the-linker-in-the-project-properties

器件型号:F28M35H52C

你好。

我想知道、正如线程标题所说、将库作为工程的文件包含 在链接器文件搜索路径中与包含库之间的区别。 我认为它们是相同的、但我在尝试将一些输入段放入我定义的输出段时注意到了一些差异。

基本上、在.cmd 文件中、我添加了以下行:

f_rts_test{
--library=rts2800_fpu32_fast_f补 遗.lib (.text)
}> RAMS
我将.lib 作为项目 文件、 无法使其正常工作。 但是、当我决定排除该文件并将其放入其工作的文件搜索路径时。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 user="user52333338"]

    基本上、在.cmd 文件中、我添加了以下行:

    f_rts_test{
    --library=rts2800_fpu32_fast_f补 遗.lib (.text)
    }> RAMS
    我将.lib 作为项目 文件、 无法使其正常工作。

    [/报价]

    在这种情况下、您是否从报告"找不到文件"rts2800_fpu32_fast_补 码.lib"的链接器命令文件中收到错误?

    如果是、请查看 CCS 编译控制台并查看链接器命令行的外观。 链接器命令文件是否出现在 rts2800_fpu32_fast_f补 遗.lib 之前的命令行上? 如果是、则会出现错误、因为在读取.cmd 文件时、链接器不知道.lib 的路径。  

    有几种方法可以解决此问题:

    1) 1)调整链接顺序、使.lib 显示在.cmd 文件之前的命令行上。 这样、链接器就知道在.cmd 文件中遇到--library 命令之前在哪里找到它。

    为此,您可以转到“项目属性->构建->链接顺序”选项卡,在此处添加两个文件,然后按顺序将.lib 文件移动到更高的位置(如下所示)。

    2)使用您已经提到的解决方案-(即)将库文件的路径添加到链接器的库搜索路径选项中。

    请告诉我们这是否有帮助。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我希望刚才的答覆能回答你原来的质询。 如果没有,请在下面发表答复。 否则、我们将假定问题已解决并关闭此主题。 谢谢!
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    很抱歉我耽误了时间。
    我继续使用我所说的内容(从编译中排除文件、并将其添加到工程属性中链接器的文件搜索路径中)来执行我的工程。
    当我执行您建议的操作时、我收到了以下警告:
    ./F28M35x_general_wshared_C28_flash.cmd"、第206行:警告:不匹配
    部分
    --library=rts2800_fpu32_fast_f늹 up.lib (.text)//此处包含快速补码中的所有代码。
    我不得不说这是一个警告、不是错误、但我无法从 RAM 运行我需要的操作。
    我要说的另一件事是、我修改了.cmd、这是因为我现在正在尝试在闪存中加载一些代码并从 RAM 运行它。 这就是它的外观:
    rts_ramfunc:{
    --library=rts2800_fpu32_fast_f늹 up.lib (.text)//此处包含快速补码中的所有代码。
    }负载>> FLASHE | FLASHF | FLASHG | FLASHA | FLASHC、
    运行>> RAML0 | RAML1 | RAMS、
    表(BINIT)
    PAGE = 0、ALIGN (4)
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [报价 USER="user523338">当我按照您的建议执行操作时,我收到了以下警告:
    ./F28M35x_general_wshared_C28_flash.cmd"、第206行:警告:不匹配
    部分
    --library=rts2800_fpu32_fast_f늹 up.lib (.text)//此处包含快速补码中的所有代码。
    我不得不说这是一个警告、不是一个错误、但我无法从 RAM 运行我需要的内容。

    我建议的方法通常应该起作用。 如果它们不起作用、我们需要查看测试用例以解释原因。  

    但是、似乎您可以通过将库添加到链接器选项的文件搜索路径来继续工作、因此我们将认为该线程已关闭。 请告诉我们情况是否不是这样。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    非常好。 让我们将此线程视为已关闭。