'libc'에 해당되는 글 1건

  1. 2005/01/08 공유 라이브러리 업데이트시 간과해서는 안될 것

[innuendo@host2 /lib]# ll libc*
-rwxr-xr-x    1 root     root      4761074 Dec 15  2000 libc-2.2.so

-rwxr-xr-x    1 root     root      8018041 Dec 19  2000 libc-2.3.so
lrwxrwxrwx    1 root     root           11 Oct  1  2002 libc.so.6 -> libc-2.2.so

libc.so.6 은 현재 libc-2.2.so 파일의 링크

새로운 공유 라이브러리 libc-2.3.so 로 업데이트를 한다고 하면..


[innuendo@host2 /lib]# ln -sf libc-2.3.so libc.so.6

[innuendo@host2 /lib]# ll libc*
-rwxr-xr-x    1 root     root      4761074 Dec 15  2000 libc-2.2.so

-rwxr-xr-x    1 root     root      8018041 Dec 19  2000 libc-2.3.so
lrwxrwxrwx    1 root     root           11 Oct  1  2002 libc.so.6 -> libc-2.3.so


주의할 점은 새로운 링크로 바꾼다고 ln -s 옵션만 주면 파일이 존재한다는 에러메세지를 뱉어낸다.

그래서 심볼릭링크를 먼저 제거한 후 새로운 공유 라이브러리로 링크를 걸어주면 되겠지 하고 실행하면 끝없는 낭패를 겪게 될 수가 있다.

libc 는 유닉스에서 사용하는 표준 C라이브러리이며 거의 모든 실행파일이 런타임에 이 라이브러리를 호출하게 된다.

당연 링크를 잃어버렸으므로 ln 명령이 먹히지 않게 된다.

그래서 강제로 링크의 값을 바꾸기위해 -f 옵션을 사용하는 것이다.


만일 이런 경우가 생기면 정적라이브러리를 가져와서 컴파일 한 다음 공유 라이브러리를 업데이트하고 정적 라이브러리를 제거해야 할 것이다. 해보지 않아서 확실히 장담할 수는 없다.