Linux에서 공유 객체는 "so 숫자"를 사용한다는 것을 알고 있습니다. 즉, 다른 버전의 공유 객체에는 다른 확장자가 제공됩니다.
example.so.1
example.so.2
아이디어는 두 가지 버전의 라이브러리가 시스템에 존재할 수 있다는 것입니다 (Windows의 "DLL 지옥"과 반대). 이것이 실제로 어떻게 작동하는지 알고 싶습니다. 종종 나는 그것이 최신 버전이 어디에 있는지에 example.so
대한 상징적 링크라는 것을 안다 . 그러면 이전 버전의 응용 프로그램에 따라 응용 프로그램이 어떻게 올바르게 식별됩니까? 어떤 숫자를 사용해야하는지에 대한 규칙이 있습니까? 아니면 이것은 단순히 관습입니까? 소프트웨어 바이너리가 시스템간에 전송되는 Windows와 달리 시스템에 최신 버전의 공유 객체가있는 경우 소스에서 컴파일 할 때 이전 버전에 자동으로 연결되는 경우입니까?example.so.2
.2
example.so
나는 이것이 관련이 있다고 생각 ldconfig
하지만 어떻게되는지 모르겠습니다.