링커, 로더, 실행 파일

링커가 수행하는 심볼 해석에 대한 설명으로 올바른 것은?

  1. A어떤 파일에서 사용하는 함수나 변수의 이름을, 다른 파일에 있는 그 정의와 대응시킨다
  2. B소스 코드의 변수 이름을 짧은 이름으로 바꿔 읽기 어렵게 만든다
  3. C수학 기호가 포함된 식을 수치로 다시 계산한다
정답과 해설 보기

정답: A. 어떤 파일에서 사용하는 함수나 변수의 이름을, 다른 파일에 있는 그 정의와 대응시킨다

main.c에서 sum 함수를 호출하고 sum.c에서 그 내용을 정의하면, main.o에는 「sum을 참조한다」, sum.o에는 「sum을 정의한다」라는 정보가 들어갑니다. 링커는 모든 오브젝트 파일의 심볼 테이블을 모아 참조마다 대응하는 정의를 하나 찾습니다. 정의를 찾지 못하면 「미정의 참조」, 둘 이상이면 「다중 정의」 오류가 됩니다.

  • A. 올바릅니다. 참조와 정의를 연결합니다.
  • B. 그것은 난독화이며 링커의 일이 아닙니다.
  • C. 심볼은 함수나 변수의 이름을 말합니다.
이 분야 연습하기 분야로 돌아가기

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

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

이 분야의 비교