둘 다 "링커"라고 불리며 바이너리를 연결하는 데 사용되지만 실제로 어떻게 다른지 알 수 없습니다. 누구든지 차이점을 말해 줄 수 있습니까?
답변1
너무 기술적이지 않으면서 둘 다 "링커"입니다. 즉, 컴파일된 코드의 한 부분을 컴파일된 코드의 다른 부분에 결합/로드하는 도구입니다.
ld
정적 링커 ld.so
이지만 .
나는 그 문자가 so
"공유 객체"의 약자라고 생각합니다. 일반적으로 공유 라이브러리, 즉 프로그램에 동적으로 링크될 수 있는 라이브러리(라이브러리는 여러 프로그램 간에 "공유"됩니다)의 파일 이름 접미사로 생각됩니다. 대조적으로, 정적 라이브러리에는 일반적으로 .a
"아카이브"(유틸리티로 생성됨 ar
)를 의미하는 파일 이름 접미사가 있습니다.
정적 링커는 일반적으로 컴파일 프로세스의 마지막 단계로 컴파일 타임에 프로그램이나 라이브러리를 연결하여 바이너리 실행 파일이나 라이브러리를 만듭니다. 바이너리 실행 파일의 경우 정적 바이너리일 수 있습니다.모두바이너리 자체에 로드된 라이브러리이거나 일부 정적으로 링크된 라이브러리가 있는 동적으로 링크된 바이너리일 수 있습니다.
동적 링커는 런타임 시 컴파일 시간에 동적으로 링크된 라이브러리를 프로세스의 주소 공간으로 로드합니다.
ld
ld.so
시스템 설명서를 참조하세요 .