내가 액세스 할 수있는 코드가 있는데 그 코드는 dlopen("lib.so", RTLD_LOCAL)
입니다.응용 프로그램 시작 후 dlopen() 검색 경로에 영향을줍니다. 가능한?
문제는 dlopen()의 검색 경로를 제어해야한다는 것입니다. 이 문제에 대한 해답은 매우 일반적으로 "LD_LIBRARY_PATH 설정"이지만 응용 프로그램 시작 전까지 설정해야 할 실제 경로를 알지 못하기 때문에이를 설정하고 응용 프로그램을 호출하는 래퍼 스크립트를 넣을 수 없습니다.
ld.so 및 dlopen의 설명서에 따르면 LD_LIBRARY_PATH는 응용 프로그램 시작시에만 검사됩니다. 나중에 setenv를 사용하여 응용 프로그램 내에서 변경하면 dlopen()의 조회 목록이 변경되지 않습니다.
dlopen()에 대한 전체 경로 지정은 전략이지만 dlopen 호출에 대한 액세스 권한이 없기 때문에이 옵션도 사용할 수 없습니다.
옵션이 없거나 찾을 수없는 마법 전략이 있습니까?
질문이 명확하지 않습니다. 방금 그 코드를 사용하고 있습니까? 아니면 일부 소스 코드를 변경할 수 있습니까? –