Linux程序库的构建和使用
2011-01-03 22:11
211 查看
Linux程序库的构建和使用(1)
2008-12-2 13:40|查看数: 836
在本文里,我们将探索与Linux的程序库有关的知识。首先,我们考察静态库的基本知识,并介绍如何使用ar命令来建立静态库。然后,我们将学习共享库方面的知识,并讲述可以动态加载的共享库的有关内容。 一、什么是程序库 通俗的讲,一个程序库就是目标程序文件的一个集合。如果某些目标文件提供了解决一个特定问题的所需功能,我们就可以把这些目标文件归并为一个程序库,从而让应用开发者更易于访问这些目标文件,省得到处去找。 对于静态库,我们可以用实用程序ar来建立。当应用程序开发人员利用程序库进行程序的编译和连接时,程序库中为应用程序所需的那些元件就会集成到最终生成的的可执行程序中。之后,因为程序库已经融入应用程序的映像之中,成为它密不可分的一部分了,所以对应用程序来说,已经没什么外部的程序库可言了。 共享程序库(或者动态程序库)也会连接到一个应用程序的映像上,不过需要两个不同的步骤。第一步发生在构建应用程序之时,链接程序检查是否在应用程序或者程序库内部找到了构建应用程序所需的全部符号(函数名或变量名)。第二步发生在运行时,动态加载器把所需的共享库载入内存,然后动态地把它链接到应用程序的映像之中。注意,这里与静态程序库不同,这次并没有把共享程序库中的所需元件放入应用程序的映像之中。很明显,这样生成的应用程序映像较小,因为共享程序库和应用程序的映像是相互独立的,如下图所示。 图1 静态库示意图 图2 动态库示意图 虽然共享库能够节约内存,但是这是有代价的——必须在运行时解析程序库。很明显,要想弄清需要哪些库,然后寻找这些库并将其载入内存肯定是需要一定时间的。 本文中,我们会建立两个程序库,一个静态库和一个动态库,并以各自的方式应用于程序之中,以此亲身体验两者之间的区别。 |
相关文章推荐
- ubuntu10.10使用GDB构建ARMlinux在线调试环境
- Linux环境使用Node.js构建访问静态网页的服务
- 在Linux中使用LVM构建灵活的磁盘存储(第一部分)
- 使用 Ansible 在树莓派上构建一个基于 Linux 的高性能计算系统
- 在linux下使用Nginx构建虚拟主机
- 使用 watchdog 构建高可用性的 Linux 系统及应用
- 使用 Vmware Player在WIndows内构建Linux环境
- Jmeter - 构建1个可供Linux使用的Jmeter测试脚本 - 共3个步骤
- 在 linux 下使用 CMake 构建应用程序
- 使用gentoo做构建嵌入式linux时遇到的问题两则[原]
- linux(centos)下使用jenkins + maven + git码云(或github) 实现自动化构建项目
- 使用 watchdog 构建高可用性的 Linux 系统及应用
- 使用 Ansible 在树莓派上构建一个基于 Linux 的高性能计算系统
- Linux下使用Apache Ant自动构建项目
- 使用 watchdog 构建高可用性的 Linux 系统及应用
- 在 linux 下使用 CMake 构建应用程序
- 在 linux 下使用 CMake 构建应用程序
- 在 linux 下使用 CMake 构建应用程序
- 在 linux 下使用 CMake 构建应用程序
- 在 linux 下使用 CMake 构建应用程序