dlopen与动态链接库的依赖 2
来源:互联网 发布:制作图文并茂的软件 编辑:程序博客网 时间:2024/06/05 20:20
上一篇文章中讲到了 两个动态链接库,有依赖关系,在dlopen时,需要使用RTLD_GLOBAL。这样之前的symbol就可以被之后的动态库找到。
这次说的是,动态链接库依赖了主程序中的symbol。
我们需要在编译时加上 -rdynamic 选项,就可以实现这个功能。
动态库 life,使用了主程序中的symbol,day.
gcc -shared -o life life.c
------------------------------------
#include <stdio.h>
#include <stdlib.h>
#include <dlfcn.h>
int day(int a);
int life(int a)
{
return day(a)+8;
}
主程序,注意 使用了 -rdynamic选项。 这样就没有问题。
如果不加-rdynamic选项,则会在运行时报 ./life: undefined symbol: day
gcc -rdynamic -o foo foo2.c -ldl
-----------------------------------------
#include <stdio.h>
#include <stdlib.h>
#include <dlfcn.h>
int day(int a)
{
printf("this is day function/n");
return a+2;
}
int main(int argc, char **argv) {
void *handle1, *handle2;
int (*life)(int a);
char *error;
handle2 = dlopen ("./life", RTLD_LAZY);
if (!handle2) {
fprintf (stderr, "%s/n", dlerror());
exit(1);
}
dlerror(); /* Clear any existing error */
life = dlsym(handle2, "life");
if ((error = dlerror()) != NULL) {
fprintf (stderr, "%s/n", error);
exit(1);
}
printf("%d/n", life(1));
dlclose(handle2);
return 0;
}
- dlopen与动态链接库的依赖
- dlopen与动态链接库的依赖
- dlopen与动态链接库的依赖 2
- dlopen动态链接库操作
- linux 下动态链接库的创建与使用——dlopen,dlsym
- linux 下动态链接库的创建与使用——dlopen,dlsym
- 动态链接库dlopen的函数的使用
- 动态链接库dlopen的函数的使用
- dlsym dlopen打开动态链接库后返回的指针
- dlopen 方式调用 Linux 的动态链接库
- 动态链接库dlopen等函数的使用
- dlopen dlsym dlclose加载动态链接库
- 链接与运行时动态库依赖
- 链接与加载---2.dlopen共享库
- 动态库的动态链接、打开、调用,使用dlopen、dlsym和dlclose
- 动态链接库的路径及依赖
- LINUX下动态链接库的使用-dlopen dlsym dlclose dlerror【zt】
- LINUX下动态链接库的使用-dlopen dlsym dlclose dlerror
- PowerShell 学习笔记
- 在 Linux 系统中,有几个目录是特别需要注意的,以下提供几个需要注意的目录,以及预设相关的用途:
- struts2上传文件
- Ext学习资料
- 【ERROR_5】php中使用正则
- dlopen与动态链接库的依赖 2
- S60 3rd Fp2 UID例表(转)
- Android批量打包,利用Ant打包
- Android Application - 应用程序之间数据共享
- poj 2236 Wireless Network (并查集)
- Oracle web环境注射技术
- 关于Symbian里面的mifconv ,(.mk和.miflist文件的作用和工作)
- email邮箱格式校验
- 集合