RTLD(1)

명칭
ld-elf.so. 1, rtld - 실행시 링크 에디터

해설
ld-elf.so. (은)는 자기 완결한 공유 오브젝트로, 실행시에 프로세스의 address 공간에 공유 오브젝트를 읽어들여 편집하는 기능을 제공합니다. 일반적으로는 동적 링커라는 이름으로도 알려져 있습니다. 동적 링크 된 프로그램에 포함되는 데이터 구조를 사용해 어느 공유 프로그램 라이브러리가 필요한가를 결정해, mmap(2) 시스템 콜을 사용해 그것들을 읽어들입니다.

모든 공유 프로그램 라이브러리를 읽어들이는 것에 성공하면(자), 다음에 ld-elf.so. (은)는 메인 프로그램 및 읽어들였다 모든 오브젝트로부터의 외부 참조를 해결합니다. 프로그램 본체의 실행이 시작되기 전에 하등의 설정을 할 기회를 공유 오브젝트에게 주기 위해서(때문에), 오브젝트 마다 초기화 routine를 부르는 기구가 있습니다. 이것은 정적 constructor　 　 을 포함하는 것 같은 C++ 프로그램 라이브러리에 있어 유용합니다.

실행되는 프로그램이 동적으로 링크 되고 있는 경우에는, 그 프로그램과 함께 ld-elf.so. 자체가 커널에 의해 읽힙니다. 그리고 커널은 동적 링커에 제어를 옮깁니다. 동적 링커가 프로그램과 거기에 필요한 공유 오브젝트의 읽어들여, 재배치, 초기화를 끝내면(자), 프로그램의 엔트리 포인트에 제어를 옮깁니다.

파일 시스템중에 있는 필요한 공유 오브젝트를 탐색하기 위해서, ld-elf.so. 하 ldconfig(8) 유틸리티에 의해 준비된다 “hints” 파일을 사용합니다.

ld-elf.so. (은)는 이하에 드는 것 같은, 자신의 동작을 바꾸기 위해서(때문에) 사용되는 몇개의 환경 변수를 인식합니다:

LD_LIBRARY_PATH
    코론으로 단락지어진 디렉토리의 리스트로, 공유 프로그램 라이브러리의 디폴트 서치 패스를 덧쓰기합니다. 이 환경 변수는, set-user-ID 및 set-group-ID 된 프로그램에 대해 무시됩니다.

LD_PRELOAD
    다른 공유 프로그램 라이브러리보다 전에 링크 되어야 할 공유 프로그램 라이브러리의 리스트로, 코론이나 공백에서 단락지어지고 있습니다. 만약 디렉토리가 지정되어 있지 않다면, 최초로 LD_LIBRARY_PATH 그리고 지정되는 디렉토리로부터, 계속되어 편입의 표준 디렉토리군으로부터 검색됩니다. 이 환경 변수는, set-user-ID 및 set-group-ID 된 프로그램에 대해 무시됩니다.

LD_BIND_NOW
    하늘이 아닌 캐릭터 라인이 설정되어 있는 경우에는, ld-elf.so. (은)는, 모든 외부 함수 호출을 프로그램의 실행을 시작하기 전에 재배치합니다. 통상, 함수 호출의 결합은 지연 방식 (lazy binding)에서 행해집니다. 즉, 함수 호출은 각각의 함수가 최초로 불릴 때에 결합됩니다. LD_BIND_NOW (은)는 프로그램의 기동 시간을 증가시킵니다만, 실행시에 생각도 걸치지 않고 함수가 정의되어 있지 않았다고 하는 사건은 피할 수 있습니다.

LD_TRACE_LOADED_OBJECTS
    하늘이 아닌 캐릭터 라인이 설정되어 있는 경우에는, ld-elf.so. (은)는 공유 오브젝트를 읽어들여, 모든 오브젝트의 절대 패스명을 포함한다 개요를 표준 출력에 표시한 후에 종료합니다.

LD_TRACE_LOADED_OBJECTS_FMT1

LD_TRACE_LOADED_OBJECTS_FMT2
    설정되어 있는 경우에는, 이러한 변수는 트레이스 출력을 커스터마이즈하기 위한 printf(3) 류포맷 캐릭터 라인으로서 해석됩니다. ldd(1) 의 -f 옵션이 이것들을 사용하므로, ldd(1) (을)를 보다 편리하게 필터로서 사용할 수가 있습니다. 이하의 변환을 사용할 수가 있습니다:

    %a  메인 프로그램의 이름 (다른 이름을 “__progname”)

    %A  LD_TRACE_LOADED_OBJECTS_PROGNAME 환경 변수의 값.

    %o  프로그램 라이브러리의 이름.

    %m  프로그램 라이브러리의 메이저 버젼 번호.

    %p  rtld 의 프로그램 라이브러리 검색 룰로 결정되는 풀 패스명.

    %x  프로그램 라이브러리의 로드 주소.

    게다가 ‘\n’ (와)과 ‘\t’ 하지만 인식되어 통상적인 의미를 가집니다.

관련 파일

/var/run/ld-elf.so.hints

관련 항목
ld(1), ldd(1), elf(5), ldconfig(8)