#include <dlfcn.h>
//定义该函数为了dladdr获取符号信息
void fun1()
{
}

Dl_info info;
//dladdr获取某个地址的符号信息
int rc = dladdr((void*)fun1, &info); //(void *)转化是关键步骤
char dir[100];
strcpy(dir, info.dli_fname); //info.dli_fname存的是包含文件名的路径.


dladdr的原型:

int dladdr(void *address, Dl_info *dlip); //这个dladdr这个函数只对动态链接程序起作用。 


dlip 是指向Dl_info 结构的指针。该结构必须由用户分配。如果指定的address 在其中一个加载模块的范围内,则


结构成员由dladdr() 设置。Dl_info 结构包含下列成员:


struct {


const char *dli_fname;  //这个路径是包含这个共享对象地址的文件路径,以我的理解就是调用这个函数的文件


void *dli_fbase;


const char *dli_sname;


void *dli_saddr;


size_t dli_size; /* ELF only */


int dli_bind; /* ELF only */


int dli_type;


};