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