• 카테고리

    질문 & 답변
  • 세부 분야

    시스템

  • 해결 여부

    미해결

동적 라이브러리 사용 중 궁금한 사항

22.09.02 09:45 작성 조회수 180

0

A 프로그램과 B 프로그램이 쉐어드 라이브러리를 사용한다고 할 때 필요한 쉐어드 라이브러리의 버전이 다를 경우 오작동이 나는 경우는 없을 까요?

답변 1

답변을 작성해보세요.

2

안녕하세요. 김진현님

좋은 질문 주셨네요. 오동작하는 경우가 발생할 수 있습니다. 하지만 문제가 발생하지 않도록 하면 잘 사용할 수 있습니다.

프로그램마다 자신이 실행될 때 필요한 shared library가 지정되어 있습니다. 프로그램이 실행될 때 그 프로그램이 동작하는 시스템에 지정된 shared library들이 존재하는지 찾게 되고, 없으면 에러를 발생합니다.

어떤 프로그램에 필요한 shared library가 모두 존재하면 프로그램이 실행됩니다. 프로그램이 어떤 shared library를 필요로 한다는 것은 그 shared library에 존재하는 object(함수라고 생각하시면 편합니다)를 사용(호출)한다는 것입니다. shared library 내의 object 중 최소 하나 이상의 object를 사용하게 되는 것이죠. 프로그램이 동작 중에 shared library에 존재하는 어떤 object를 사용(함수 호출)했을 때 해당 shared library 내에 그 object가 없으면 에러가 발생합니다. 당연한 이치죠.

shared library의 버전이 다르다는 것은 뭐가 달라도 다른 것을 의미합니다. object의 종류가 다를 수도 있고, object의 종류는 같지만 그 내용이 달라졌을 수도 있습니다. 이런 면에서 shared library의 버전이 다르면 프로그램 입장에서는 에러없이 동작할 수도 있지만, 에러가 발생할 수도 있습니다.

그래서 프로그램을 개발하는 개발자/개발부서에서는 이런 일이 발생하지 않도록 조심해야 합니다. 소프트웨어 형상 관리도 잘 해야 하고, 프로그램 뿐만 아니라 프로그램이 동작하는 환경(즉, shared library를 포함한 리눅스 시스템)도 잘 관리해야 합니다. 이런 관리가 까다롭기 때문에 shared library를 사용하지 않도록 프로그램을 작성하기도 합니다.

긴 답변이 되었는데요, 잘 이해가 되셨는지 모르겠습니다. 추가 질문 있으시면 댓글 남겨주세요~