LD_DEBUG가 포함된 표현식을 처리하는 방법은 무엇입니까?

LD_DEBUG가 포함된 표현식을 처리하는 방법은 무엇입니까?

LD_DEBUG의 사용 예는 다음과 같습니다.

LD_DEBUG=libs applicationName

LD_DEBUG=라이브러리단순한 작업 - Bash에서는 어떻게 작동합니까(결과 인쇄)?

답변1

LD_DEBUG해당 컨텍스트 내에는 값을 할당한 환경 변수가 있습니다 libs. 방금 시작한 명령의 환경에 배치되는 것 LD_DEBUG외에는 그 자체로는 아무 것도 수행하지 않습니다 .

동적으로 링크된 실행 파일을 시작할 때 가장 먼저 일어나는 일은 동적 링커가 ld.so(8)런타임 링크와 기호 확인을 수행하는 것입니다. 이를 수행하는 동적 링커의 코드는 컴파일된 코드와 마찬가지로 환경 변수를 읽을 수 있습니다. 프로그램은 이 환경 변수와 기타 여러 변수를 읽고 이를 기반으로 동작을 수정합니다. 매뉴얼 페이지에는 동적 링커에 영향을 미치는 모든 환경 변수가 자세히 설명되어 있습니다.

답변2

LD_DEBUG는 ld.so.1(ELF 바이너리에서 호출되는 동적 링커)에서 평가됩니다.

동적 링커의 매뉴얼 페이지를 확인하십시오:

http://schillix.sourceforge.net/man/man1/ld.so.1.1.html

셸에서는 아무 작업도 수행되지 않으며 실행되는 바이너리에 의해 모든 작업이 "완료"됩니다.

참고: 이 명령은 ldd특별한 작업을 수행하지 않고 일부 LD_* 변수를 설정한 다음 명령을 시작하려고 시도합니다. 옵션이 지정되지 않으면 ldd는 을 설정합니다 LD_TRACE_LOADED_OBJECTS_[AE].

http://schillix.sourceforge.net/man/man1/ldd.1.html

그리고 관련 소스코드.

관련 정보