【问题标题】:C Standard Libraries and greenhills compilerC 标准库和 greenhills 编译器
【发布时间】:2016-09-13 20:51:36
【问题描述】:

我想问两个问题。(微控制器项目)

  1. 运行时库和标准库(针对 c 语言)有什么区别?
  2. 我想为使用标准 c 库的微控制器编写代码。以前我曾经在自定义库环境中工作。但现在我必须集成标准 C 库。我将使用 Greenhills 编译器。我的问题是: 我必须集成标准 C 库或运行时库吗?如何获取这些库并集成到系统中?

谢谢

【问题讨论】:

  • 我建议把这个问题分成两个独立的帖子。

标签: c shared-libraries microcontroller standard-library


【解决方案1】:
  1. 运行时库和标准库(针对 c 语言)有什么区别?

C 标准库是一组函数,每个符合的托管 C 实现都可用于程序。在这种情况下,“库”是指函数的抽象集合,而不是可链接的目标文件。

另一方面,运行时库是一个或多个二进制库文件,其中包含实现希望提供给所有程序的函数实现。它特定于给定的 C 实现。运行时库通常包含至少一些标准库函数的实现,但它们可能会省略部分甚至全部,并且它们可能包含未指定属于标准库的函数。

根据实现的不同,部分甚至全部标准库函数,甚至更多函数,默认情况下可供程序使用,即使没有专门链接库。

  1. 我想为使用标准 c 库的微控制器编写代码。以前我曾经在自定义库环境中工作。但现在我必须集成标准 C 库。我将使用 Greenhills 编译器。我的问题是:我必须集成标准 C 库或运行时库吗?如何获取这些库并集成到系统中?

如果您正在为微控制器编写代码,那么这可能是独立 实现,而不是托管实现。不需要独立实现来提供大多数标准库函数,我想这就是重点。无论如何,标准库与运行时库是一条红鲱鱼。您需要的是您实际使用的功能的实现。这些很可能是标准库函数的一小部分,以及您的一些函数。

至于从哪里获得它们,如果 Greenhills 没有为您提供版本,那么可以使用 C 标准库的轻量级实现,例如 µClibc (== 微控制器 libc)。谷歌可能会帮助你找到更多。如果您选择集成其中之一,请务必遵守其许可条款。您可能需要您的管理层批准。

【讨论】:

  • 在这种特定情况下,因为听起来我们正在处理自定义微控制器,所以“C 运行时库”可能非常具体地指代 C 运行时本身。该软件负责提供 C 风格的执行环境,以及运行需要在 main() 函数之前和之后执行的任何必要代码,例如调用程序构造函数。 en.wikipedia.org/wiki/Crt0
  • @John Bollinger 谢谢你的详细回答。这对我帮助很大。和 µClibc 一样,我还发现了另一个库 ''newlib''。现在两者都包含一堆文件。我不知道如何从这些文件中制作运行时/标准库。我认为对于库,我只需要将“.c”和“.h”文件复制到我的环境中。但在那里我没有找到任何这些文件。谢谢
  • @waq,对不起,这是一个问答网站,不是专业发展诊所。如果您真的像看起来那样迷路,那么您可能需要一些面对面的帮助。主管或同事将是更合适的资源。
  • @waq 您的 Green Hills 编译器肯定带有标准库和运行时支持库的实现(我的)。阅读文档。或联系 Green Hills Software 寻求支持。
  • @kkrambo 在我的 greenhills 环境中,我可以看到标准库的头文件。但我找不到存档文件''.a''。或标准库的其他文件。
猜你喜欢
  • 2018-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-09-26
  • 2017-03-09
  • 1970-01-01
  • 2016-12-30
相关资源
最近更新 更多