라이브러리 버전, API 버전 및 soname: 이름을 어떻게 지정해야 합니까?

라이브러리 버전, API 버전 및 soname: 이름을 어떻게 지정해야 합니까?

libfoo다음과 같은 라이브러리가 있다고 가정해 보겠습니다.

  • 그 버전은0.4.2
  • 0.4API 버전은 어디에 있나요?
  • 2새로운 API 기능이 추가될 수 있는 버전 번호입니다.

soname은 이어야 할까요 libfoo.so.0.4, libfoo.so.0.4.2아니면 다른 것이어야 할까요?

답변1

API 버전이 이고 0.4다른 버전과 호환되지 않는 경우 0.*soname을 로 설정해야 합니다 libfoo.so.0.4. 실제로 soname은 어떤 문자열이든 될 수 있습니다. 실행 파일이 로드될 때 시스템에서 적절한 공유 라이브러리를 찾으면 됩니다.

많은 패키지(또는 배포판)는 귀하와 다른 명명 체계를 따릅니다. 예를 들어, 0.4.2api가 포함된 libfoo 버전은 soname이 0.4됩니다 .libfoo.so.4.2libfoo.4

인터페이스에 주요 변경 사항이 적용되면 여기저기서 문제를 다시 컴파일하고 수정해야 할 뿐만 아니라 라이브러리 이름을 변경하여 "주요" 주요 버전을 불러오는 방식으로 라이브러리를 사용하여 코드를 다시 작성해야 합니다. 그런 다음 버전 libfoo.4.2이 에서 .libfoo-1.so.0.10.4.21.0.1

이 시나리오를 사용하면 일부 오래된 소프트웨어가 완전히 새로운 API로 다시 작성되지 않은 경우 여러 버전의 라이브러리를 더 쉽게 설치할 수 있습니다.

답변2

일반적으로 libfoo.so.0.4.2 파일을 만들고 libfoo.so.0 -> libfoo.so.0.4.2를 심볼릭 링크합니다.

관련 정보