링커, 로더, 실행 파일

정적 라이브러리(.a 파일)와 함께 링크할 때 링커가 실행 파일에 포함시키는 것으로 올바른 것은?

  1. A라이브러리 안의 모든 오브젝트 파일
  2. B라이브러리의 파일 이름뿐이며 코드는 포함시키지 않는다
  3. C라이브러리 안의 오브젝트 파일 중 미정의 참조를 해결하는 데 필요한 것만
정답과 해설 보기

정답: C. 라이브러리 안의 오브젝트 파일 중 미정의 참조를 해결하는 데 필요한 것만

정적 라이브러리는 많은 오브젝트 파일을 하나로 모은 아카이브입니다. 링커는 아직 정의를 찾지 못한 심볼을 정의하고 있는 오브젝트 파일만 아카이브에서 꺼내 포함시킵니다. 그래서 표준 라이브러리처럼 많은 함수를 포함한 라이브러리라도 사용한 함수만큼만 실행 파일이 커집니다.

  • A. 모두 넣으면 실행 파일이 쓸데없이 커집니다.
  • B. 이름만 기록하는 것은 동적 링크입니다.
  • C. 올바릅니다. 쓰지 않는 부분은 들어가지 않습니다.
이 분야 연습하기 분야로 돌아가기

링커, 로더, 실행 파일의 다른 문제

  1. GNU 링커에서 「gcc -lmylib main.o」처럼 정적 라이브러리를 그것을 사용하는 오브젝트 파일보다 앞에 쓰면 미정의 참조 오류가 나는 경우가 있다. 그 이유로 올바른 것은?
  2. 위치 독립 코드(PIC)에 대한 설명으로 올바른 것은?
  3. 공유 라이브러리에서 사용되는 GOT(전역 오프셋 테이블)의 역할로 올바른 것은?
  4. 동적 링크에서 PLT(프로시저 링키지 테이블)를 사용한 지연 바인딩(레이지 바인딩)을 하는 경우의 설명으로 올바른 것은?
  5. Linux에서 동적 링크 프로그램을 시작할 때 동작하는 동적 링커(ld.so 등)의 역할로 올바른 것은?

이 분야의 비교