Linux App 의 Lib의존성 확인하기

동적 link를 이용하도록 linux app를 컴파일 했다면, 라이브러이 의존성이 생긴다.

이때는 ldd 명령으로 의존 라이브러리를 확인할 수 있다.

$ ldd ./cyclerSuite
linux-gate.so.1 => (0x00e4f000)
libm.so.6 => /lib/libm.so.6 (0x00a66000)
libpthread.so.0 => /lib/libpthread.so.0 (0x006d9000)
libc.so.6 => /lib/libc.so.6 (0x00be0000)
/lib/ld-linux.so.2 (0x007e5000)

프로그램이 실행될 때 런타임 링커는 관련 라이브러리를 모두 찾아서 메모리에 올린다.

이때 링커가 관련 라이브러리를 찾기 위해서 여러 폴더를 순차적으로 검색하게 되는데

이때 이런 순서를 결정하는 변수가 $LD_LIBRARY_PATH 라는 변수이다

만약 $LD_LIBRARY_PATH가 잘 되어 있지 않다면, 런타임 링커는 계속 찾아 해맨다.

따라서 프로그램 시작 시간이 지연될 수 있다.

프로그램이 라이브러리를 빠릇 빠릇 하게 잘 찾는지를 확인해 보려면 strace를 돌려보면 된다.

Advertisements

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

w

%s에 연결하는 중