ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • library linking
    2013. 7. 27. comments

    linux library

    linux는 windows와 달리, 시스템에서 동일 library의 여러 버전을 가지고 있는 것을 권장하지 않는다. 그래서 yum 또는 apt같은 패키지 배포에서는 library 의존성에 맞게 설치하게 되어 있다. 배포판 관리입장에서는 정교하게 library와 프로그램을 지원해주는 일을 하고 있고, 호환성을 위해 바로 이전 버전의 library를 함께 설치가능하게 지원>하는 등의 배려는 하고 있다.




    library force link 

    그런일이 일어나지 않아야 하지만, 제품의 호환성과 준비 시간의 문제로 하나의 시스템에 여러 library 버전을 설치해야 하는 경우도 있다. 여기서 문제는 동일 library의 다른 버전으로 두 개 설치되었다고 해서 우리가 원하는 버전을 참조하지 않을 것이라는 점이다.(엄밀히 말해 최신버전만을 참조할 것입니다). 컴파일 타임에서, linker에게  library의 버전까지 명시해주면 해당 library를  강제로 참조하게 만들 수 있다.


    -lcurl

    일반적으로 build를 할 때 linker 옵션을 위와 같이 주면 설치된 시스템에서 curl의 가장 높은 버전을 찾아서 참조한다. 


    -l:libcurl.so.3


    -l:lib파일명으로 직접 버전명까지 명시해주면 해당 library만 참조하게 할 수 있다. 한계점으로는 소스코드를 빌드할 수 있을 경우에만 가능하다는 점이다. 




    ldd를 통한 library 참조 확인

    빌드 후, ldd명령을 사용하면 binary or library파일이 어떠한 library를 참조하는지 확인해야 한다. 내가 만든 프로그램이 library를 잘 참조하는지는 확인해야 하기 때문이다. 


    2011/07/18 - [리눅스(Linux)/개발(Developemnt)] - [Tool] ldd


    반응형

    댓글

Designed by Tistory.