스티븐 키트가 썼다https://unix.stackexchange.com/a/448943
진입점이 있는 모든 ELF 객체는 다른 속성에 관계없이 실행 파일이 될 수 있습니다.
그리고 ld.so
(진입점으로 인해) 실행 파일이자 공유 라이브러리입니다.
ELF 객체 파일이 공유 라이브러리가 되기 위한 필요조건과 충분조건은 무엇입니까?
ELF 객체 파일이 재배치 가능한 객체 파일이 되기 위한 필요조건과 충분조건은 무엇입니까?
아래 인용문은 공유 라이브러리가 재배치 가능한 객체 파일이라고 말합니다.
실행 파일도 재배치 가능한 대상 파일인가요?
실행 파일이 공유 라이브러리입니까?
컴퓨터 지원 응용 프로그램설명하다
7.3 대상 파일
개체 파일은 세 가지 형식으로 제공됩니다.
재배치 가능한 대상 파일. 실행 가능한 개체 파일을 생성하기 위해 컴파일 타임에 다른 재배치 가능한 개체 파일과 결합할 수 있는 형식의 이진 코드와 데이터가 포함되어 있습니다.
실행 가능한 개체 파일입니다. 메모리에 직접 복사하여 실행할 수 있는 형태의 바이너리 코드와 데이터를 포함합니다.
대상 파일을 공유합니다.특별한 유형의 재배치 가능한 객체 파일로드 시 또는 런타임 시 메모리에 로드되고 동적으로 연결될 수 있습니다.
답변1
ELF 객체 파일이 공유 라이브러리가 되기 위한 필요조건과 충분조건은 무엇입니까?
ELF 유형에 속합니다 DYN
. 유용하게 사용하려면 라이브러리의 ABI를 구성하는 기호도 내보내야 합니다.
ELF 객체 파일이 재배치 가능한 객체 파일이 되기 위한 필요조건과 충분조건은 무엇입니까?
ELF 유형에 속합니다 REL
. 이는 해당 코드가 재배치 가능하고 재배치 테이블을 포함하고 있음을 의미합니다.
실행 파일도 재배치 가능한 대상 파일인가요?
실행 파일은 재배치될 수 있지만 파일은 아닙니다 REL
.
실행 파일이 공유 라이브러리입니까?
그럴 수도 있지만 대부분은 그렇지 않습니다. 그러나 많은 실행 파일은 DYN
공유 라이브러리로 사용하려는 의도가 아니더라도 ELF 유형입니다 . 이는 위치 독립적 실행 파일임을 나타냅니다(참고자료 참조 DT_FLAGS_1
).