문제

정적으로 도서관에 연결되는 프로그램이 있습니다 (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에 액세스 할 수있는 하나의 통계 세트와 응용 프로그램에 접근 할 수있는 다른 독립적 인 통계 세트가 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top