//动态库调试时,可以在库函数中设置断点,使用n代表不进入库函数单步调试,使用s代//表进入库函数单步调试
//注意:可以使用ldd libtest.so查看动态库的依赖情况
//在默认情况下,运行时程序只会去系统路径下如/usr/lib等目录下查找动态库,可以配置运//行库目录并运行ldconfig命令把新加的动态库加进动态库加载缓存区
//ldconfig是一个动态链接库管理命令,为了让动态链接库为系统所共享,还需运行动态链接库的//管理命令--ldconfigldconfig 命令的用途,主要是在默认搜寻目录(/lib和/usr/lib)以及动态库配置 //文件/etc/ld.so.conf内所列的目录下,搜索出可共享的动态链接库(格式如前介绍,lib*.so*),进而创//建出动态装入程序(ld.so)所需的连接和缓存文件.缓存文件默认为 /etc/ld.so.cache,此文件保存//已排好序的动态链接库名字列表.
//动态库代码如下,只能使用g++编译,不能使用gcc,不然动态加载时可能加载不到
//编译语句 g++ -shared -fpic -o libtest.so testso.cpp
#include <stdio.h>
extern "C"
int max()
{
printf("zjszjszjs\n");
return1;
}
//动态加载动态库代码如下,只能使用g++编译
//编译语句: g++ -o main -ltest loadsotest.cpp –ldl
#include <stdio.h>
#include <dlfcn.h>
typedef int (*CAC_FUNC)();
int main ()
{
void* handle =dlopen("libtest.so", RTLD_LAZY);
if(!handle)
{
printf("loaderor\n");
}
CAC_FUNCmax= (CAC_FUNC)dlsym(handle, "max");
if(!max)
printf("loadmax error \n ");
max();
return0;
}