ld.so는 실행 파일인가요?

ld.so는 실행 파일인가요?
$ file /lib/ld-linux.so.2
/lib/ld-linux.so.2: symbolic link to i386-linux-gnu/ld-2.27.so
$ readlink -f /lib/ld-linux.so.2
/lib/i386-linux-gnu/ld-2.27.so
$ file /lib/i386-linux-gnu/ld-2.27.so
/lib/i386-linux-gnu/ld-2.27.so: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, BuildID[sha1]=7a59ed1836f27b66ffd391d656da6435055f02f8, stripped

ld-2.27.so 그럼 공유도서관 인가요 ?

동적 링커/로더라고 합니다.그리고"man"의 8절에서 언급됨. 그럼 실행가능한가요?

그렇다면 공유 라이브러리라는 이름을 붙인 이유는 무엇입니까 *.so?

그렇지 않다면 이것이 동적 링커/로더로서 실행 파일과 같고 man 섹션 8에 언급되어 있다는 것을 어떻게 이해합니까?

감사해요.

답변1

둘 다,이것은 완전히 유효합니다.

-스타일 명명 체계는 ld.so대체로 역사적입니다. 이 스타일의 첫 번째 동적 링커는 SunOS 4로 명명되었습니다. ld.so(어딘가에 대한 기록이 있으므로 조금 찾아보면 명확하게 설명하겠습니다.) 그러나 실행 파일이 아닌 공유 라이브러리로 명명하는 데는 다음과 같은 타당한 이유가 있습니다.

  • 공유 라이브러리와 같은 실행 파일을 제공하기 위해 존재합니다(실행 파일이 실행되지 않으면 아무런 목적도 없습니다).
  • 이는 공유 ELF 객체이지만 인터프리터가 필요하지 않습니다(항목이 없음 .interp). 이는 일반적인 라이브러리입니다(공유 또는 동적으로 링크된 실행 파일에는 항상 인터프리터가 필요합니다. 그렇지 않으면 정적으로 링크됩니다).

ELF에서는 실행 파일과 라이브러리 간의 구분이 다소 모호합니다. 진입점 및/또는 인터프리터가 있는 모든 ELF 개체는 다른 속성에 관계없이 실행 파일이 될 수 있습니다.

관련 정보