라이브러리 소스를 받아 컴파일 할때. 컴파일은 무사히 끝나고 헤더는 /usr/local/include 에,
라이브러리들은 /usr/local/lib에 설치 되었을 때, 헤더를 갖고 작성한 프로그램을 컴파일한 후 실행시켰으나
동작하지 않는 경우가 있습니다.
라이브러리를 인식하지 못해서 생기는 에러가 많이 발생하는데 이런 경우 아래와 같이 체크 하시면 됩니다.
1. /etc/ld.so.conf 를 확인한다.
- /etc/ld.so.conf 에 라이브러리가 위치한 디렉토리, 여기에서는 /usr/local/lib 가 포함되어
있는지 확인합니다. 들어있지 않다면 한줄 추가합니다. root 권한으로 해야 한다.
2. 실행 파일이 필요로 하는 동적 라이브러리에 대한 의존성이 모두 해결되어 있는지 확인해 본다.
- 이 때는 ldd 를 이용한다. 예를 들어 다음과 같이 나타난다면 libcurses.sof.5 가 어디에 있는지 알 수 없어
실행되지 못합니다.
/usr/local/lib 에 설치한 라이브러리 파일이 혹시 다음과 같이 표시 될 수 있을 것이다.
# ldd /usr/bin/telnet
libutil.so.1 => /lib/libutil.so.1 (0x40019000)
libncurses.so.5 => not found
libc.so.6 => /lib/i686/libc.so.6 (0x42000000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
3. ldconfig 를 실행한다.
- 기본 라이브러리의 위치인 /ilb, /usr/lib, 그리고 /etc/ld.so.conf 의 추가 라이브러리 위치 디렉토리에 있는
라이브러리를 찾도록 /etc/ld.so.cache 를 갱신한다. root 권한으로 실행한다.
라이브러리들은 /usr/local/lib에 설치 되었을 때, 헤더를 갖고 작성한 프로그램을 컴파일한 후 실행시켰으나
동작하지 않는 경우가 있습니다.
라이브러리를 인식하지 못해서 생기는 에러가 많이 발생하는데 이런 경우 아래와 같이 체크 하시면 됩니다.
1. /etc/ld.so.conf 를 확인한다.
- /etc/ld.so.conf 에 라이브러리가 위치한 디렉토리, 여기에서는 /usr/local/lib 가 포함되어
있는지 확인합니다. 들어있지 않다면 한줄 추가합니다. root 권한으로 해야 한다.
2. 실행 파일이 필요로 하는 동적 라이브러리에 대한 의존성이 모두 해결되어 있는지 확인해 본다.
- 이 때는 ldd 를 이용한다. 예를 들어 다음과 같이 나타난다면 libcurses.sof.5 가 어디에 있는지 알 수 없어
실행되지 못합니다.
/usr/local/lib 에 설치한 라이브러리 파일이 혹시 다음과 같이 표시 될 수 있을 것이다.
# ldd /usr/bin/telnet
libutil.so.1 => /lib/libutil.so.1 (0x40019000)
libncurses.so.5 => not found
libc.so.6 => /lib/i686/libc.so.6 (0x42000000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
3. ldconfig 를 실행한다.
- 기본 라이브러리의 위치인 /ilb, /usr/lib, 그리고 /etc/ld.so.conf 의 추가 라이브러리 위치 디렉토리에 있는
라이브러리를 찾도록 /etc/ld.so.cache 를 갱신한다. root 권한으로 실행한다.