[질문] dll 내에서 자신이 로드된 현재 디렉토리 찾아내기.

bizzare의 이미지

어떤 dll 또는 so 파일이 로드되었을 때,
그 자신 내에서

자신이 지금 어느 디렉토리에 있는지 확인하고 싶습니다.
그런걸 알아내는 함수가 있는지요. -_-;

즉,

/home/bin/A.so 가 로드되었다면
A.so가 로드되는 순간
/home/bin/ 을 알아내서 찍고 싶고

/home/A.so 가 로드되었다면
A.so가 로드되는 순간
/home/ 을 알아내서 찍고 싶습니다.

지금 로드가 되는 순서를 정확히 모르겠네요.

익명 사용자의 이미지

Windows면 GetModuleFileName()

Linux면 LD_LIBRARY_PATH하고 Current Directory를 뒤져야 할 것 같군요.

일반적으로 그런 패쓰를 알아야 되는 설계는 좋지 않습니다.
설정이라면,
Windows는 Registry에
*IX면 /etc/xxx 또는 /home/xxx에 하세요.

feanor의 이미지

Windows이면 GetModuleFileName이구요,

목적이 여기저기 옮길 수 있는 바이너리(relocatable binary)를 만드시는 거라면 간단하지는 않은데, Autopackage 프로젝트에서 이미 만들어놓은 BinReloc 라이브러리를 사용하실 수 있습니다.

http://autopackage.org/docs/binreloc/

--feanor