Linux 동적 라 이브 러 리 함수 에 대한 상세 한 설명

Linux 동적 라 이브 러 리 함수 에 대한 상세 한 설명
동적 라 이브 러 리 불 러 오기

void *dlopen(const char *filename, int flag);
flag 가능 값:
  •         RTLD_LAZY
  •         RTLD_NOW
  •         RTLD_GLOBAL
  •         RTLD_LOCAL
  •         RTLD_NODELETE (since glibc 2.2)
  •         RTLD_NOLOAD (since glibc 2.2)
  •         RTLD_DEEPBIND
  • 이 flag 의 구체 적 인 의 미 는 man 으로 볼 수 있 습 니 다.
    동적 라 이브 러 리 의 최근 오 류 를 되 돌려 줍 니 다.
    
    char *dlerror(void);
    동적 라 이브 러 리 핸들 과 함수 이름 에 따라 함수 의 주 소 를 되 돌려 줍 니 다.
    
    void *dlsym(void *handle, const char *symbol);
    dlopen(NULL,)을 사용 하여 핸들 을 얻 으 면 이 핸들 을 통 해 모든 함수 기 호 를 찾 을 수 있 습 니 다.그 함수 기호 가 있 는 dll 이 불 러 올 때 RTLD 를 지정 하면GLOBAL 
    동적 라 이브 러 리 닫 기
    
    int dlclose(void *handle);
    함수 주소 에 따라 함수 이름과 다른 정 보 를 되 돌려 줍 니 다.
    입력 주 소 를 함수 코드 공간 범위 내 에 두 면 됩 니 다.함수 의 시작 주소 가 필요 없습니다.
    
    int dladdr(void *addr, Dl_info *info);
     
    typedef struct {
       const char *dli_fname;/* Filename of defining object */
       void *dli_fbase;   /* Load address of that object */
       const char *dli_sname;/* Name of nearest lower symbol */
       void *dli_saddr;   /* Exact value of nearest symbol */
      } Dl_info;
    
     구조 함수 와 석조 함수(이 두 개 는 속성 이지 함수 가 아니다)
    
    __attribute__((constructor))
    __attribute__((destructor))
    
    예 를 들 면:
    
    __attribute__((constructor)) void before_main() 
    { 
        printf("before main/n"); 
    } 
     
    __attribute__((destructor)) void after_main() 
    { 
      printf("after main/n"); 
    } 
    
    궁금 한 점 이 있 으 시 면 메 시 지 를 남기 거나 본 사이트 의 커 뮤 니 티 에 가서 토론 을 교류 하 세 요.읽 어 주 셔 서 감사합니다. 도움 이 되 셨 으 면 좋 겠 습 니 다.본 사이트 에 대한 지지 에 감 사 드 립 니 다!

    좋은 웹페이지 즐겨찾기