Linux程序库的构建和使用

来源:互联网 发布:网络播放器哪个牌子好 编辑:程序博客网 时间:2024/05/22 11:39

Linux程序库的构建和使用(1)

2008-12-2 13:40|查看数: 836

在本文里,我们将探索与Linux的程序库有关的知识。首先,我们考察静态库的基本知识,并介绍如何使用ar命令来建立静态库。然后,我们将学习共享库方面的知识,并讲述可以动态加载的共享库的有关内容。

一、什么是程序库

通俗的讲,一个程序库就是目标程序文件的一个集合。如果某些目标文件提供了解决一个特定问题的所需功能,我们就可以把这些目标文件归并为一个程序库,从而让应用开发者更易于访问这些目标文件,省得到处去找。

对于静态库,我们可以用实用程序ar来建立。当应用程序开发人员利用程序库进行程序的编译和连接时,程序库中为应用程序所需的那些元件就会集成到最终生成的的可执行程序中。之后,因为程序库已经融入应用程序的映像之中,成为它密不可分的一部分了,所以对应用程序来说,已经没什么外部的程序库可言了。

共享程序库(或者动态程序库)也会连接到一个应用程序的映像上,不过需要两个不同的步骤。第一步发生在构建应用程序之时,链接程序检查是否在应用程序或者程序库内部找到了构建应用程序所需的全部符号(函数名或变量名)。第二步发生在运行时,动态加载器把所需的共享库载入内存,然后动态地把它链接到应用程序的映像之中。注意,这里与静态程序库不同,这次并没有把共享程序库中的所需元件放入应用程序的映像之中。很明显,这样生成的应用程序映像较小,因为共享程序库和应用程序的映像是相互独立的,如下图所示。

图1 静态库示意图

图2 动态库示意图

虽然共享库能够节约内存,但是这是有代价的——必须在运行时解析程序库。很明显,要想弄清需要哪些库,然后寻找这些库并将其载入内存肯定是需要一定时间的。

本文中,我们会建立两个程序库,一个静态库和一个动态库,并以各自的方式应用于程序之中,以此亲身体验两者之间的区别。


原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 咸丰重宝拾文 重拾旧爱 重拾信心的句子 重振大明 重振旗鼓 重振 笑傲之重振华山 重振旗鼓的意思 重振大明 路人家 神级融合大师 重振饼风 平放重回地球养女儿 湿气重泡脚放什么管用 重名人数查询 代数重数和几何重数 特征值的重数 数组去重的方法 几何重数与代数重数 轻叠数重 重数 重整旗鼓 破产重整 重整末世 重整 合并重整 企业重整 重整什么 富贵鸟破产重整 重整旗鼓意思 重整山河待后生 重整行装再出发 重整山河待民国 破产重整程序流程图 全国破产重整案件信息网 重整旗鼓的意思 重整末世 左岸左左 重整旗鼓是什么意思 破产重整与破产清算的区别 重整河山待后生骆玉笙 重整旗鼓造句 企业破产重整 全国破产重整信息网