加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_泰州站长网 (http://www.0523zz.com/)- 视觉智能、AI应用、CDN、行业物联网、智能数字人!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

Ubuntu Linux---GNU libc库

发布时间:2016-01-26 20:41:49 所属栏目:Linux 来源:网络整理
导读:除了libc和libm库,UNIX系统库没有其他标准的命名规范。Linux上的一些系统库可能和UNIX平台上库的名称不同,这就需要知道Linux上各库所包含和支持的功能。表3-2

3.2 GNU科学库

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

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

Ubuntu Linux---GNU libc库

这些例程的用法在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

3.4 库版本化

在共享库和应用程序之间维护二进制级的兼容性或ABI是很重要的。共享库的ABI是应用程序依赖的运行时接口;如果每次发布时共享库的ABI都与以前的兼容,那么在其中某一个版本的共享库上编译的应用程序不需要任何改动就可以在后续版本上运行。库版本化就是Linux以及同期的其他操作系统实现二进制兼容性的方法。

我们以前移植过的一些应用程序需要库版本化的支持。各UNIX平台也都实现了库版本化,但实现的方法不尽相同。Linux提供了两种不同的技术来实现库版本化:外部库版本化和符号版本化。

(编辑:云计算网_泰州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读