링커, 로더, 실행 파일

Linux의 dlopen 함수(Windows의 LoadLibrary에 해당)의 용도로 가장 적절한 것은?

  1. A프로그램의 소스 코드를 열어서 편집한다
  2. B플러그인처럼 실행 중에 필요해진 공유 라이브러리를 읽어 들여 함수를 호출한다
  3. C파일을 열어서 안의 데이터를 읽고 쓴다
정답과 해설 보기

정답: B. 플러그인처럼 실행 중에 필요해진 공유 라이브러리를 읽어 들여 함수를 호출한다

일반적인 동적 링크에서는 사용할 공유 라이브러리가 시작할 때 정해져 있습니다. dlopen을 사용하면 실행 중에 이름을 지정해 라이브러리를 읽어 들이고, dlsym으로 함수의 주소를 꺼내 호출할 수 있습니다. 어떤 라이브러리를 쓸지 설정이나 사용자의 선택으로 정할 수 있으므로, 플러그인 구조나 있으면 쓰는 선택적 기능의 구현에 자주 쓰입니다.

  • A. 소스 코드 편집과는 관계가 없습니다.
  • B. 올바릅니다. 시작할 때가 아니라 필요해졌을 때 읽어 들입니다.
  • C. 일반 파일을 여는 것은 fopen이나 open입니다.
이 분야 연습하기 분야로 돌아가기

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

  1. 100개의 프로세스가 같은 공유 라이브러리를 사용하고 있을 때, 물리 메모리 사용 방식으로 올바른 것은?
  2. 오브젝트 파일을 역어셈블했더니 외부 함수 printf를 호출하는 명령의 분기 대상이 0 같은 임시 값으로 되어 있었다. 이 값은 언제 올바르게 채워지는가?
  3. 임베디드 개발에서 사용하는 링커 스크립트의 역할로 올바른 것은?
  4. OS가 없는 마이컴에서 전원을 켠 직후, 시작 코드가 main을 호출하기 전에 수행하는 처리로 올바른 것은?
  5. ELF 파일에서 「섹션」과 「세그먼트」의 차이로 올바른 것은?

이 분야의 비교