您的位置:首页 > 其它

实现动态链接库

2008-10-08 20:37 204 查看
*引用本文请注明来自 blog.csdn.net/wtz1985

在WINDOWS中,动态链接库的实现是通过DLL,对于DLL,大家熟悉得不能再熟悉的.那么在LINUX中,它又是怎样实现动态库链接的,为什么要实现动态库的链接呢?

至于为什么要实现动态库的链接,简单的而言,就是为了让节省空间,提高效率,可能在小的程序编译中感觉不出来,但你面对着庞大的程序时,如果不采取动态库链接的话,一开始就把所有的共享库编译进去,这样不但费时间,而且很费空间,效率自然就有所降低了.然而,采取了动态库的链接之后,你就会根据所需,边用边编译.这点肤浅的道理,就讲到这里.

在LINUX中,动态库的链接提供了这么几个接口:

1、dlopen函数。

第一个参数:指定共享库的名称,将会在下面位置查找指定的共享库。
-环境变量LD_LIBRARY_PATH列出的用分号间隔的所有目录。
-文件/etc/ld.so.cache中找到的库的列表,用ldconfig维护。
-目录usr/lib。
-目录/lib。
-当前目录。
第二个参数:指定如何打开共享库。
-RTLD_NOW:将共享库中的所有函数加载到内存
-RTLD_LAZY:会推后共享库中的函数的加载操作,直到调用dlsym()时方加载某函数

2、dlsym函数。

调用dlsym时,利用dlopen()返回的共享库的phandle以及函数名称作为参数,返回要加载函数的入口地址。

3、dlerror函数。

该函数用于检查调用共享库的相关函数出现的错误。

4、dlclose函数

该函数一看表面的英文意思就知道什么意思了,打开了之后记得关闭就是了。

具体的代码操作就不在这里演示了,自己可以实践实践~~

~~ end ~~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: