电脑技术学习

Ubuntu Linux---GNU libc库

dn001

;3.1.1 glibc遵循的标准

  GNU glibc发布了一个描述其所遵循的标准的报告(注释6)。该报告同时也列出了GNU libc需要改进的地方。写作本书时,该报告显示GNU libc通过了FIPS POSIX90、POSIX96、UNIX98、ANSI、C89/99,和ISO9899标准的头文件一致性检查。所有主要Linux发行版的glibc也都遵循LSB规范。

  3.2 GNU科学库

  把进行高性能计算的应用程序移植到Linux上需要一个支持库,该库要与UNIX平台上的科学库非常匹配。Linux上类似的库叫GNU科学库(GNU Scientific Library,简写作GSL)。GSL是一系列数学运算例程的集合。这些例程是用C语言重新编写的,并且给编程人员提供了一个新式的API模式---允许编程人员为各高级语言编写包裹函数(wrapper)。这些源代码使用的是GPL发布许可。

  GNU科学库包含了数学运算领域的很多内容。表3-3列出了GNU科学库提供的例程。


;这些例程的用法在GSL手册(注释7)中有详尽的描述,包括函数的定义、示例程序,以及函数实现的算法所引用的论文。

  3.3 共享库

  我们所移植过的大多数应用程序都使用了共享库。然而,不同的操作系统在创建和命名共享库时却不尽相同。Linux上,共享库可以有不同的文件扩展名,例如,共享库可以以.so或.so.1.0结束。以.so.x.x(x为数字)结尾的共享库叫版本化库。第一个数字代表大版本号,第二个数字代表小版本号。有些情况下,共享库的扩展名还可以是.so.x.x.x(x为数字)的形式,这里最后一个数字代表发布号,并且是可选的。下面给出了共享库文件名的格式:

  (代码)p58 第11行,lib.so...

  大版本号、小版本号,以及发布号的变化反映了对共享库所作的不同类型的修改。下面是对增大大版本号、小版本号和发布号的一些指导:

  - 当对共享库提供的接口做了与以前版本不兼容的改变时,需要增大大版本号。这个大的改变意味着依赖该库先前大版本的应用程序需要作相应修改才能使用大版本更新后的库。

  - 当共享库增加了新的接口同时也保留了原来的接口时,增大小版本号。

  - 当作了与以前兼容的修改又没有增加新接口时,增大发布号。这通常是对一些实现做了改动以提高性能和扩展性。

  要在Linux上创建共享库,使用-shared编译参数;该参数告诉GNU ld创建一个共享库而不是应用程序。下面是这样一个例子:

  (代码)p58 最后一行 $ gcc o libfoo.so shared fpic foo.c

上一页;;[1];[2][3];[4];[5];下一页

标签: linux