링커, 로더, 실행 파일

주요 OS에서 사용하는 실행 파일 형식의 조합으로 올바른 것은?

  1. ALinux는 PE, Windows는 Mach-O, macOS는 ELF
  2. BLinux는 ELF, Windows는 PE, macOS는 Mach-O
  3. C어떤 OS든 ELF를 사용한다
정답과 해설 보기

정답: B. Linux는 ELF, Windows는 PE, macOS는 Mach-O

실행 파일의 형식은 OS마다 정해져 있습니다. Linux와 BSD, 많은 임베디드 기기는 ELF, Windows는 .exe나 .dll의 PE(Portable Executable), macOS와 iOS는 Mach-O를 사용합니다. 내용의 개념(코드와 데이터 영역, 심볼, 재배치, 동적 링크 정보)은 비슷하지만 형식이 다르므로, 같은 CPU용이라도 OS가 다르면 실행 파일은 그대로 동작하지 않습니다.

  • A. 조합이 뒤바뀌어 있습니다.
  • B. 올바릅니다. OS마다 형식이 다릅니다.
  • C. Windows와 macOS는 다른 형식입니다.
이 분야 연습하기 분야로 돌아가기

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

  1. 재귀가 너무 깊어져 스택의 상한을 넘었을 때, Linux 등에서 일반적으로 일어나는 일로 올바른 것은?
  2. C 언어에서 초깃값을 쓰지 않은 지역 변수와 전역 변수의, 사용을 시작했을 때의 값에 대한 설명으로 올바른 것은?
  3. malloc과 free를 반복하는 사이에, 빈 메모리의 합계는 충분한데도 큰 영역을 한꺼번에 확보하지 못하게 되는 경우가 있다. 이 현상을 무엇이라고 하는가?
  4. 공유 라이브러리를 만들 때, 외부에서 사용하는 함수만 공개하고 내부 함수는 심볼의 가시성(visibility)을 「hidden」으로 하는 이점으로 올바른 것은?
  5. C++에서 전역 오브젝트의 생성자가 main보다 먼저 실행되는 구조로 올바른 것은?

이 분야의 비교