'ld'와 'ld.so'의 차이점은 무엇입니까?

'ld'와 'ld.so'의 차이점은 무엇입니까?

둘 다 "링커"라고 불리며 바이너리를 연결하는 데 사용되지만 실제로 서로 어떻게 다른지 알 수 없습니다. 누구든지 차이점을 말해 줄 수 있습니까?

답변1

너무 기술적이지 않으면서: 둘 다 "링커"입니다. 즉, 컴파일된 코드 조각을 컴파일된 코드의 다른 조각과 결합/로드하는 도구입니다.

ld는 정적 링커이고 는 ld.so동적 링커입니다.

내 생각에 이 문자 so는 "공유 객체"의 약자이며 일반적으로 공유 라이브러리, 즉 프로그램에 동적으로 링크될 수 있는 라이브러리의 파일 이름 접미사로 표시됩니다(하나의 라이브러리는 여러 프로그램에서 "공유"됩니다). . 이와 대조적으로 정적 라이브러리에는 .a"아카이브"(유틸리티에 의해 생성됨)를 의미하는 파일 이름 접미사가 있는 경우가 많습니다 ar.

정적 링커는 일반적으로 컴파일 프로세스의 마지막 단계로 컴파일 타임에 프로그램이나 라이브러리를 연결하여 바이너리 실행 파일이나 라이브러리를 만듭니다. 바이너리 실행 파일의 경우 다음과 같은 정적 바이너리일 수 있습니다.모두라이브러리는 바이너리 자체에 로드되거나 일부 라이브러리만 정적으로 링크된 동적으로 링크된 바이너리일 수 있습니다.

동적 링커는 컴파일 타임에 동적으로 링크된 라이브러리를 런타임 시 프로세스의 주소 공간에 로드합니다.

해당 시스템 의 설명서를 참조하세요 ld.ld.so

관련 정보