링커, 로더, 실행 파일

정적 링크에 대한 설명으로 올바른 것은?

  1. A사용하는 라이브러리의 코드를 실행 파일 안에 복사하여 결합한다
  2. B프로그램을 실행할 때마다 라이브러리를 읽어 들여 결합한다
  3. C라이브러리를 쓰지 않고 모든 처리를 하나의 소스 파일에 쓴다
정답과 해설 보기

정답: A. 사용하는 라이브러리의 코드를 실행 파일 안에 복사하여 결합한다

정적 링크에서는 링커가 정적 라이브러리(Linux에서는 .a 파일)에서 필요한 함수를 꺼내 실행 파일에 포함시킵니다. 실행 환경에 라이브러리가 없어도 동작하고 시작할 때 결합하는 수고도 없지만, 실행 파일이 커지고 같은 라이브러리를 쓰는 프로그램마다 사본을 가지게 됩니다. 라이브러리의 결함이 수정되어도 다시 빌드하지 않으면 반영되지 않습니다.

  • A. 올바릅니다. 실행 파일만으로 동작합니다.
  • B. 그것은 동적 링크입니다.
  • C. 라이브러리를 쓰는지 여부와는 별개의 이야기입니다.
이 분야 연습하기 분야로 돌아가기

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

  1. 동적 링크(공유 라이브러리)의 이점으로 올바른 것은?
  2. 동적 링크를 사용한 프로그램을 다른 컴퓨터에 복사해 실행했더니 시작되지 않았다. 가장 가능성이 높은 원인은?
  3. 정적 라이브러리(.a 파일)와 함께 링크할 때 링커가 실행 파일에 포함시키는 것으로 올바른 것은?
  4. GNU 링커에서 「gcc -lmylib main.o」처럼 정적 라이브러리를 그것을 사용하는 오브젝트 파일보다 앞에 쓰면 미정의 참조 오류가 나는 경우가 있다. 그 이유로 올바른 것은?
  5. 위치 독립 코드(PIC)에 대한 설명으로 올바른 것은?

이 분야의 비교