링커, 로더, 실행 파일
Linux에서 동적 링크 프로그램을 시작할 때 동작하는 동적 링커(ld.so 등)의 역할로 올바른 것은?
- A소스 코드를 컴파일하여 기계어를 만든다
- B필요한 공유 라이브러리를 찾아 메모리에 읽어 들이고, 심볼을 연결한 다음 프로그램을 시작시킨다
- C프로그램이 종료된 뒤 디스크의 빈 공간을 정리한다
정답과 해설 보기
정답: B. 필요한 공유 라이브러리를 찾아 메모리에 읽어 들이고, 심볼을 연결한 다음 프로그램을 시작시킨다
동적 링크 실행 파일에는 사용할 동적 링커의 위치가 적혀 있으며, OS는 프로그램을 읽어 들이면 먼저 동적 링커에 처리를 넘깁니다. 동적 링커는 필요한 공유 라이브러리를 찾아 읽어 들이고, 재배치와 심볼 결합을 수행한 다음 프로그램의 진입점으로 제어를 옮깁니다. dlopen으로 실행 중에 라이브러리를 추가로 읽어 들이는 처리도 동적 링커가 담당합니다.
- A. 컴파일은 컴파일러의 일입니다.
- B. 올바릅니다. 실행 시 링크를 담당합니다.
- C. 디스크 정리와는 관계가 없습니다.