링커, 로더, 실행 파일

링커의 주된 역할로 올바른 것은?

  1. A여러 오브젝트 파일이나 라이브러리를 결합하고, 이름을 주소에 연결해 실행 파일을 만든다
  2. B소스 코드의 문법 오류를 찾아서 알려 준다
  3. C실행 중인 프로그램의 메모리를 다 쓰고 나면 자동으로 해제한다
정답과 해설 보기

정답: A. 여러 오브젝트 파일이나 라이브러리를 결합하고, 이름을 주소에 연결해 실행 파일을 만든다

링커는 각 오브젝트 파일에서 참조하는 이름(심볼)을 어딘가에서 정의된 실체와 대응시키고(심볼 해석), 각 파일의 코드와 데이터를 나열해 최종 주소를 정한 다음, 명령 안의 임시 주소를 올바른 값으로 고쳐 씁니다(재배치). 필요하면 라이브러리에서 함수를 꺼내 추가합니다. 이렇게 해서 OS가 읽어 들여 실행할 수 있는 실행 파일이 완성됩니다.

  • A. 올바릅니다. 심볼 해석과 재배치를 수행합니다.
  • B. 문법 오류는 컴파일러가 찾습니다.
  • C. 그것은 가비지 컬렉터의 일입니다.
이 분야 연습하기 분야로 돌아가기

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

  1. 링커가 수행하는 심볼 해석에 대한 설명으로 올바른 것은?
  2. 링커가 수행하는 재배치(리로케이션)에 대한 설명으로 올바른 것은?
  3. C 언어 프로그램을 링크했더니 「undefined reference to `foo'」(foo에 대한 미정의 참조)라는 오류가 나왔다. 가장 가능성이 높은 원인은?
  4. a.c와 b.c 양쪽에서 static을 붙이지 않은 같은 이름의 전역 함수 void init(void)를 정의하고 링크했다. 일어나는 일로 올바른 것은?
  5. C 언어에서 함수에 static을 붙여 정의했을 때(예: static int helper(void))의 효과로 올바른 것은?

이 분야의 비교