Newlib:嵌入式与桌面式

时间:2017-10-31 05:54:25

标签: c newlib linux-toolchain

我正在为一个玩具项目编译基于Newlib的Linux工具链。

Newlib的官方网页报告:

  

Newlib是一个旨在用于嵌入式系统的C库。

但没有提供任何特殊原因。

我想弄清楚的是:

  1. 为什么newlib认为自己嵌入"只有"?
  2. 在桌面或服务器环境中使用它有什么缺点?

1 个答案:

答案 0 :(得分:4)

与Glibc不同,后者具有非常具体的代码以确保它可以与以后的API兼容版本替换,Newlib并非如此; nor does it support dynamic linking anyway。在桌面环境中的每个可执行文件中静态链接C库没有多大意义。因此,Newlib主要适用于具有少量静态链接可执行文件的嵌入式目标。

Newlib也只满足C标准库的一部分和POSIX C库扩展的一小部分。具体而言,它根本不涉及networking。如果任何人在他们正确的思想中,想要在2017年建立一个没有任何网络的桌面系统,这是有争议的。

需要注意的另一件事是许可的非技术方面。 Glibc使用LGPL许可证,它允许链接专有程序,前提是(注意IANAL)用户能够用另一个库替换LGPL许可的库。实际上,这意味着要么动态链接库,要么在静态链接库的情况下,向用户提供可用于链接替换库以生成可执行文件的目标文件。这意味着许可证本身可能不适合具有专有软件的小型嵌入式系统。 Newlib doesn't contain any LGPL code, unless it is built for Linux targets