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.

[参考译文] 编译器/MSP430FR2633:多器件支持特定于器件的.libs、如何指示链接器从正确的器件库中拉出

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/903628/compiler-msp430fr2633-multiple-device-support-with-device-specific-libs-how-to-instruct-linker-to-pull-from-correct-device-library

器件型号:MSP430FR2633

工具/软件:TI C/C++编译器

大家好、

我们为 FR2633、FR2522和 FR2676系列器件构建特定于器件的.lib。  我们为客户提供的每个演示项目都包含所有三个.libs。  每个演示项目都是特定于器件的、因此我们使用 project.spec 来确保项目文件和设置正确导入到 CCS 中。

我们的问题是、有时链接器会选择错误的器件.lib、即使在 project.spec 中我们指定要使用哪个.lib。  随附为 project.spec 文件。

e2e.ti.com/.../FR2633_5F00_CAPTIVATE_2D00_BSWP_2D00_Demo.projectspec

我们尝试根据器件控制链接器拉入哪个.lib。

      
      

这已经可靠地运行了几年了、但偶尔我们还没有确定原因、有时链接器会选择错误的.lib。

我们通过检查.map 文件来验证这一点。

以下是生成上述.map 文件的编译器/链接器输出。

是否有更可靠的方法来确保链接器选择正确的库? 或者、我们能否更改 make 文件中指定.libs 排序的内容?

谢谢

      

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

    Dennis、

    工程是否具有多个编译配置、以便要拉入的库基于编译配置?  

    观察构建输出、似乎有多个.libs 被添加到项目中、从而被拉入链接中。 什么决定了需要将哪个库拉入链接?

    我还看到链接器以多种方式拉入库-一次是将库直接添加到工程中、另一次是使用-l 选项添加库。 其中一种方法应该是足够的。

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

    尊敬的 AartiG:

    感谢您的建议

    我们修改了 projectspec 文件以仅包含一个器件 spif lib、而不是所有系列 libs。

    这是生成的构建输出。

    映射文件确认并似乎已修复此问题。

    事实证明、包含所有系列库的最初原因是允许用户在 CCS 中切换到不同的系列变量、而不必生成整个新项目。

    再次感谢-感谢您的帮助。