Linux系统中静态库和动态库的生成和使用(2)

分类: 系统管理   出处:iocblog整理  更新时间:2009-02-08   添加到收藏  

4、const char *dlerror(void)

动态库链接库执行失败时,dlerror返回错误信息,若执行成功,则返回null

 

例子:

 

 

main.c
int main(void)
{
void *handle;
char *error;
void (*welcome)();

if ((handle = dlopen("./libttt.so", rtld_lazy)) == null)
{
printf("dlopen error
");
return -1;
}

welcome = dlsym(handle, "welcome");
if ((error = dlerror()) != null)
{
printf("dlsym error
");
return -1;
}
welcome();
dlclose(handle);

return 0;
}

gcc -ldl -o main main.c

-ldl 指明dlopen函数所在的库。

注意:dlopen("./libttt.so", rtld_lazy),的目录是在当前目录下,如果不在当前目录下,程序运行错误

 

共享库进行更新或安装新库后,必须运行ldconfig命令更新/etc/ld.conf文件中相应的项

如果使用rpm进行安装,一般会自动进行更新,不过也不能保证这一点。

 

使用数学库时加上 -lm

gcc -lm

 

库工具使用:

ldd 工具

ldd 用来显示执行文件需要哪些共享库, 共享库装载管理器在哪里找到了需要的共享库。[iocblog.net 来源]

上一页 [1] [2]


Tag: 静态库 ,动态库



文章整理:iocblog
版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。