동적 라이브러리 사용 중 궁금한 사항
335
작성한 질문수 32
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를 사용하지 않도록 프로그램을 작성하기도 합니다.
긴 답변이 되었는데요, 잘 이해가 되셨는지 모르겠습니다. 추가 질문 있으시면 댓글 남겨주세요~
Ubuntu 설치 문제(중간에 설치가 멈춥니다)
0
338
3
VirtualBox ubuntu 24.04 설치 나름의 tip
1
227
3
제가 입문자입니다
0
101
2
터미널 창의 프롬프트가 너무 깁니다. 짧게 하고 싶습니다.
0
223
3
core 생성이 안됩니다.
0
114
2
cd /home/pig 권한 거부가 발생합니다.
0
76
2
강의에 관한 잘문은 아니고 궁금한게 있어서 여쭙고자 합니다.
0
83
2
리눅스 가상머신
0
90
2
설치 속도가 심각하게 느립니다
0
146
2
mv /tmp/pineapple . 명령어 입력했는데 다음과 같이 나타납니다.
0
75
2
cal 이라고 치니까 찾을 수 없는 명령어라고 뜹니다.
0
99
2
계속 검은 화면이 뜨는 이유가 무엇인가요?
0
444
2
그래픽 컨트롤러를 VBoxVGA로 바꾸었는데 화면이 안뜹니다.
0
175
2
우분투 설치가 안됩니다.
0
374
2
sudo 권한
0
320
4
파일 권한 실습 관련 질문
0
182
1
강의내용 관련 질문입니다
0
180
2
기본 명령어 내용까지 들으려고 하는데요
0
136
1
텍스트 에디터 질문
0
158
2
수업자료 출력해서 강의 들어야 하나요?
0
255
2
소프트링크 질문
0
153
2
강의에 수학과 관련된 내용이 있나요?
0
119
1
라즈베리파이를 이용한 학습 문의
0
128
2
안녕하세여 제가 뭘 놓친 부분이 있을까요?
0
227
2





