【问题标题】:Alternative to Newlib?替代 Newlib?
【发布时间】:2013-06-05 14:59:27
【问题描述】:

我是一名使用 IA-32 类型处理器的嵌入式软件工程师。我们正在寻找一个编译器工具链——最好是免费的。

我们曾经使用 Mentor Graphics CodeBench Lite,但它不再可用。

我们查看了其他 GCC 发行版,但它们都没有 glibc 的裸机实现。除了 newlib 之外没有,但由于 GPL 和 LGPL 许可问题,我们不能使用它。我们是 OEM,我们的客户(和我们)拥有专有代码。

欢迎提出任何建议。

【问题讨论】:

  • 请参阅:COPYING.NEWLIB 以获取根据 Cygnus/Redhat 的许可证。
  • 投票以离题结束。

标签: gcc embedded x86 bare-metal newlib


【解决方案1】:

Sourcery 的“精简版”gpl 工具仍然可用,只是 Mentor 喜欢玩隐藏链接。

如果您想要一个具有非 GPL 许可的轻量级 C 库,您可以查看 Android 中的 Bionic。

但是,您的担心可能是错误的。 IANAL 但大多数 C 库许可证都有某种链接例外,您可能希望在律师的帮助下进行研究 - 如果没有,它们作为系统库的效用将非常有限。

实际上,快速搜索一下 newlib 许可页面(这很复杂)似乎表明它更多的是在 BSD 风格的许可证下而不是在 GPL 风格的许可证下,尽管需要小心地将它们全部整理出来。

【讨论】:

  • 我同意克里斯的观点;但堆栈溢出不适合“律师”。我在许多专有产品中看到了 newlib 可移植性实现。见:libc for embeddedeCos 最初使用 newlib(以及 Cygwin)。我最近还注意到Musl。 BSD 类型 libc 也很有用,但不适用于 bare metal(如 MuslBionic)。
  • 请注意,尽管 Sourcery Lite 工具仍然可用,但 IA-32 裸机目标的版本不在 Lite 版页面上。
  • 顺便说一句,一些谷歌搜索确实找到了旧的 IA-32 裸机 CodeBench Lite Edition 工具链的下载链接——但当然原因是该链接不在 Lite Edition 主页上是它们已经过时并且不再更新:sourcery.mentor.com/GNUToolchain/subscription28188?lite=IA32。如果您想使用 Newlib,可能值得从那里下载源代码并查看包含的 .sh 文件以了解它是如何构建的。
【解决方案2】:

Mentor 可能不再提供 IA-32 裸机工具链的 Lite 版本,但我很确定商业版本仍然支持它,而且基本许可证并不那么昂贵。

正如 Chris 所说,Newlib 许可页面有点复杂——但它的要点是,基本上裸机系统所需的所有内容都是 BSD 许可的; IIRC,获得 GPL 许可的部分是明确描述的特定于系统的部分,它们引用 Linux 内核等中的内容(因此必须获得 GPL 许可),并且这些部分不包含在裸机构建中.我认为它们甚至都在一两个不同的目录中,您可以删除它们。显然,您应该自己进行分析,但这是您应该期望找到的结果。

一个可能有用的快捷方式:最新版 CodeBench Lite for IA-32 ELF 的下载页面,由 is on this page 生成。如果您从那里下载源 tarball,您将获得用于构建它的 Newlib 源,并且包中还有一个 .sh 文件,指示它是如何配置和构建的。您会注意到,在文档中(许可证位于入门指南的背面)中,Newlib 二进制文件被简单地列为 BSD 许可,因此这应该向您展示 Mentor 如何获得符合该许可描述的编译库。

(免责声明:直到最近我一直在 Mentor 工作。)

【讨论】:

    猜你喜欢
    • 2018-10-13
    • 1970-01-01
    • 2021-03-30
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    • 2015-11-09
    • 2011-08-10
    • 1970-01-01
    相关资源
    最近更新 更多