获取linux下动态库加载时的绝对路径

来源:互联网 发布:ipad发展 知乎 编辑:程序博客网 时间:2024/06/06 00:24

 dladdrCFind the shared object that contains a given address
This function finds the shared object that contains a given address.
http://publib.boulder.ibm.com/infocenter/tpfhelp/current/index.jsp?topic=/com.ibm.ztpf-ztpfdf.doc_put.cur/gtpc2/cpp_dladdr.html

 

dladdrCFind the shared object that contains a given address
This function finds the shared object that contains a given address.

Last updated
Added for PUT05.

Format
#include <dlfcn.h>
int *dladdr(void *addr, Dl_info *info);info
The z/TPF system returns the following in the D1_info structure:
The name of the shared object.
The load address of that shared object.
The name of the function or NULL if it is not found.
The address of the function or NULL if it is not found.
Examples
This example finds the shared object that contains a given address.

#include <getopt.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <dlfcn.h>


void identify_function_ptr( void *func)  {  
  Dl_info info; 
  int rc;     

  rc = dladdr(func, &info);  

  if (!rc)  {   
      printf("Problem retrieving program information for %x:  %s\n", func, dlerror());
  } 
 
  printf("Address located in function %s within the program %s\n", info.dli_fname, info.dli_sname); 

}Related information
dlcloseCClose a shared object
dlerrorCGet information about dynamic link errors
dlopenCOpen a shared object
dlsymCGet the address of a symbol from a shared object.
See z/TPF C functions overview for more information about z/TPF C/C++ language support.

Parent topic: z/TPF C functions
Previous topic: detac_idCDetach a working storage block from the ECB
Next topic: dlaycCDelay processing of current entry

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

void identify_function_ptr( void *func)  {  
  Dl_info info; 
  int rc;     

  rc = dladdr(func, &info);  

  if (!rc)  {   
      printf("Problem retrieving program information for %x:  %s\n", func, dlerror());
  } 
 
  printf("Address located in function %s within the program %s\n", info.dli_fname, info.dli_sname); 
}

 Address located in function /usr/lib/libm.so within the program cosf