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.

[参考译文] CC3200标准C库

Guru**** 2609285 points
Other Parts Discussed in Thread: CC3200

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/634716/cc3200-standard-c-libraries

主题中讨论的其他部件:CC3200

使用CCS编译CC3200的代码时,是否有方法确保标准C库的编译具有最小大小的优化?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    此外,我在地图文件中看到标准库中的符号,根据我的搜索,这些符号不会出现在项目中(例如calloc)。
    是否有办法确保在链接过程中删除标准库中未使用的符号?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    链接器自动排除大多数未使用的函数。 是否确定未使用calloc? 可能是您正在调用另一个库函数,该函数本身调用calloc。 如果您不确定,请在此处发布链接器映射文件。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    要解决有关RTS代码大小的问题并避免调用函数,您需要构建自定义RTS库。  然后,在CCS项目中,从使用标准RTS库更改为使用自定义库。

    您可以使用Mklib实用程序构建自定义RTS库 。  这是一个命令行工具。 在命令行shell中,导航到编译器安装的\lib目录。  这将是一个类似于...的位置

    C:16.9 \ti\ccsv7\tools\compiler\ti-CGT-arm_LTS.4.LTS\lib 

    确保您的系统路径包括编译器安装的\bin目录。  然后发出类似于...的命令。

    .\mklib
    --pattern=rtsv7M4_T_le_eabi.lib
    --name=rtsv7M4_T_le_eabi_small.lib
    --install_to_C:\path\to\my\CCS\project
    --Extra _options="--gen_func_Subsections=on --opt_of_speed=0"
    -parallel 

    我将逐行讨论此命令。  但是当你真正调用它时,所有的东西都必须在一行上。

    第1行调用mklib实用程序。  第2行命名您当前使用的RTS库。  这是CC3200通常使用的库。  但这必须与您现在使用的任何功能相匹配。  第3行命名新的自定义库。  您可以随意命名它。  我使用了标准RTS库名称加上"_small"。  第4行说明了新库的放置位置。  我将它放在需要它的CCS项目的位置。  第5行列出了自定义生成选项。  --gen_func_Subsections=on将每个函数放在单独的部分中。  --opt_for speed=0告诉编译器在优化时始终选择大小。  请在 ARM编译器手册中阅读有关这些选项的更多信息。  第6行是可选的。  它将生成命令分布在如此多的线程中,通常使生成速度更快。

    现在,自定义库是CCS内部版本中的另一个文件。  但您需要告诉CCS不要使用标准RTS库。  右键单击项目名称,然后选择“属性”。  然后使用下面的屏幕截图。

    谢谢,此致,

    -George