购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.4 系统共享库

系统共享库是程序启动时预加载的库。当一个共享库被正确加载之后,被启动的所有程序将自动使用这个共享库。用户态应用程序一般会链接系统共享库,并使用系统共享库访问特定的系统功能。这个系统功能可能是包含在库中的,比如压缩或者加密算法,或者需要访问内核底层资源和硬件。对后一种情况,库提供了一些简单的API,这些API抽象并封装了内核以及直接驱动访问的复杂性。

或者说,系统共享库封装了系统功能,因此在构建与系统交互的应用程序时成为一个基本的构建块。每一个共享库有一个特定名称“soname”。soname包含前缀“lib”、库的名字、“.so”,后面跟一个句点和一个版本号。当接口发生改变时,版本号将递增(作为一个例外,底层的C库不会以“lib”开头)。一个完整的soname以它所在的目录名为前缀;在实际工作中的系统中,一个完整的soname是指向共享库“真实名称”的符号链接。

每一个共享库也有一个“真实名称”,即包含库代码的文件名。真实名称是soname后面添加一个句点、一个次版本号、另一个句点和发行版本号。最后一个句点以及发行版本号是可选的。你可以通过次版本号和发行版本号知道库的安装版本,并控制库的配置。注意,这个版本号与库文档中描述的版本号有可能不一致。

另外,在使用编译器的时候也要依赖一些库(称为“链接名”),它只是soname,不带版本号。

下面列出的这些共享库是LSB(Linux标准库)规范所必需的,因此在符合LSB的系统中必须包含这些库:

这些库被放在标准根文件系统的指定路径下:

注意: 针对SAMA5D2( helloworld_sam.c )和BCM2837( helloworld_rpi.c )的驱动程序源代码可以从本书的GitHub仓库下载。 suNIksy16iKXIAoksH70nKFn3uIS3ujHnNOIWI1G90uBYmCWXa50SNyWE2k57Z+N

点击中间区域
呼出菜单
上一章
目录
下一章
×

打开