동일한 라이브러리를 정적으로 그리고 동적으로 연결합니다
-
11-09-2019 - |
문제
정적으로 도서관에 연결되는 프로그램이 있습니다 (libA.2.0.a
) 또한 다른 라이브러리에 동적으로 연결됩니다 (libB.so
). libB.so
또한 이전 버전의 Liba와 동적으로 연결됩니다 (libA.1.0.so
).
이 구성이 가능합니까? 그렇다면 시스템은 어떻게 libA.2.0.a
내 프로그램과 기호를 위해 libA.1.0.so
~을 위한 libB.so
?
해결책
예,이 구성이 가능합니다.
시스템이 기호 사용 방법을 알고있는 방법에 대한 질문에 대한 답변으로 모든 링크가 빌드 시간에 발생한다는 것을 기억하십시오. 그것이 구축 된 후에는 "기호"의 문제가 아니라 다양한 주소로 다양한 기능을 호출합니다.
libb.so를 구축 할 때 Liba.1.0.so에 대한 링크를 설정합니다. 사용하는 다른 응용 프로그램이 무엇을 할 것인지 알거나 신경 쓰지 않으며 자체 기능 호출을 매핑하는 방법을 알고 있습니다.
응용 프로그램 자체를 구축 할 때 응용 프로그램은 libb.so로 연결됩니다. LIBB.SO 호출은 응용 프로그램에 완전히 알려지지 않았습니다. 응용 프로그램은 또한 LIBB.가 신경 쓰지 않는 라이브러리에 정적으로 연결됩니다.
하나의 gotcha : Liba가 정적 변수를 사용하는 경우 libb.so에 액세스 할 수있는 하나의 통계 세트와 응용 프로그램에 접근 할 수있는 다른 독립적 인 통계 세트가 있습니다.
제휴하지 않습니다 StackOverflow