glibc



porting GNU C library
=============
GNU
C在写的时候,就注意到移植性这个问题。它把和机器、操作系统相关的函数很好的分离了出来。
所以加入新的机器或者操作系统的C库实现也会非常容易。

首先,我们先看一下库的源码树结构,然后看看GNU
C是通过什么样的机制来选择机器有关的代码来用的。

所有和机器在、操作系统有关的文件都放在顶层目录下的sysdeps文件夹中。

sysdeps结构约定
————–
GNU配置名字有三部分:CPU类型,生产商名称以及操作系统。
configure用这些来查找系统相关目录。
执行configure时如果没有加“–nfp”选项,目录/machine/fpu也会被用到。
操作系统常常也有一个基类操作系统(译者加:就如同面向对象中的基类)。举个例子,Linux操作系统的基类操作系统是”unix/sysv”.

挑选目录的算法很简单:configure先产生包含有基类操作系统,生产商,CPU类型和操作系统的一个列表。然后,它再用“/”把它们连结起来,这样就产生了一个目录名;举个例子,“i686-linux-gnu”最后会变成“unix/sysv/linux/i386/i686”。
configure之后就会依次移除列表中的元素,所以unix/sysv/linux,unix/sysv都会有遍历到,