동적 링커는 운영 체제에 의해 자동으로 호출됩니까, 아니면 ELF 파일에 포함된 코드에 의해 호출됩니까?

동적 링커는 운영 체제에 의해 자동으로 호출됩니까, 아니면 ELF 파일에 포함된 코드에 의해 호출됩니까?

/usr/bin/ld동적 링커가 ELF 파일을 로드할 때 운영 체제에 의해 자동으로 호출되는지, 아니면 ELF 파일에 포함된 코드에 의해 호출되는지 잘 모르겠습니다 .

ELF 파일을 디버깅 하는 데 사용할 때 r2실행될 첫 번째 명령(동적 링커 코드여야 함)에서 중지되지만 해당 코드가 ELF 파일의 일부인지는 알 수 없습니다.

답변1

커널은 동적 로더를 로드합니다(이것은 아닙니다 /usr/bin/ld. 참조).정적 링커, 동적 링커, 로더 및 동적 로더의 실행 가능한 ELF 파일은 무엇입니까?).

ELF 바이너리를 실행하면 커널은 동적으로 연결된 바이너리에 대해 특정 ELF 바이너리 로더를 사용하고 ELF 헤더에 지정된 인터프리터를 찾아서 로드한 다음 대상 바이너리를 실행하도록 지시합니다. 인터프리터는 필요한 라이브러리를 로드하고, 정의되지 않은 기호를 확인하고, 프로그램 시작 주소로 점프하는 동적 로더입니다. (바라보다Linux에는 어떤 유형의 실행 파일이 있습니까?커널의 바이너리 로딩에 대한 자세한 정보입니다. )

LWN에 자세히 설명된 기사가 있습니다.프로그램 실행 방법: ELF 바이너리.

관련 정보