静态库和共享库(二)

来源:互联网 发布:org.apache.http jar包 编辑:程序博客网 时间:2024/06/02 07:46

BRARY值;
(2) 动态链接缓冲文件/etc/ld.so.cache
(3) 目录/lib, /usr/lib
flag表示在什么时候解决未定义的符号(调用).取值有两个:
1) RTLD_LAZY : 表明在动态链接库的函数代码执行时解决.
2) RTLD_NOW : 表明在dlopen返回前就解决所有未定义的符号, 一旦未解决, dlopen将返回错误.
dlopen调用失败时, 将返回NULL值, 否则返回的是操作句柄.
3. dlsym : 取函数执行地址
原型为: void *dlsym(void *handle, char *symbol);
dlsym根据动态链接库操作句柄(handle)与符号(symbol), 返回符号对应的函数的执行代码地址.由此地址, 可以带参数执行相应的函数.
如程序代码: void (*add)(int x,int y); /* 说明一下要调用的动态函数add */
add=dlsym("xxx.so","add"); /* 打开xxx.so共享库,取add函数地址 */
add(89,369); /* 带两个参数89和369调用add函数 */
4. dlclose : 关闭动态链接库
原型为: int dlclose (void *handle);
dlclose用于关闭指定句柄的动态链接库, 只有当此动态链接库的使用计数为0时,才会真正被系统卸载.

原创粉丝点击