实现动态链接库

*引用本文请注明来自 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 ~~



 

你可能感兴趣的:(linux,windows,dll,Path,library)