0
나는 링커 또는 로더에 대한 많은 기사를 읽었지만
다른 객체 모듈의 위치에 대한 심볼릭 참조로 객체 모듈에서 절대 참조를 대체 할 책임이있는 사람을 혼란스럽게합니다. 링커가 다른 객체 모듈 또는 로더에서 심볼릭 참조를 대체합니까? 메인 메모리의 프로그램로드 시간에 이것을 만듭니다.심볼릭 참조 링커 또는 로더에 대한 책임이있는 사람
나는 링커 또는 로더에 대한 많은 기사를 읽었지만
다른 객체 모듈의 위치에 대한 심볼릭 참조로 객체 모듈에서 절대 참조를 대체 할 책임이있는 사람을 혼란스럽게합니다. 링커가 다른 객체 모듈 또는 로더에서 심볼릭 참조를 대체합니까? 메인 메모리의 프로그램로드 시간에 이것을 만듭니다.심볼릭 참조 링커 또는 로더에 대한 책임이있는 사람
객체 모듈 간의 심볼 종속성을 해결하는 것은 일반적으로 링커의 책임이었습니다. 링커는 모든 개체 파일을 검사하고 모든 기호 참조를 확인하고 모 놀리 식 실행 파일을 만듭니다. 그러나이 접근법은 공유 라이브러리, 즉 다른 실행 파일간에 공유 할 수 있고로드 타임에 프로그램에 링크되는 객체 모듈을 도입 할 때 무너집니다. 이 작업을 수행하기 위해 링커의 일부가 로더로 이동하여 종속성을 공유 책임으로 해석합니다. 링커는 실행 파일과 공유 라이브러리 간의 종속성을 해결하는 동안 객체 파일과 정적 라이브러리 간의 종속성을 해결합니다.
이걸 실험적으로 볼 수 있어야합니다. 객체 (어셈블러/컴파일러)는 필요한 것을 기호화 된 이름으로 지정합니다. 링커는 링커 스크립트에 정의 된 항목에 대해 확실하게 상징적 인 이름을 추가합니다. 링커는 객체간에 점을 전역 적으로 연결할 수있는 유일한 객체이므로 하나의 객체에 extern이 있고 다른 객체에 해당 항목이 포함되어 있으면 링커에서 항목을 추가하고 두 항목을 함께 연결하여 업데이트합니다. –
어디에 로더가 들어 왔는지 잘 모르겠다. 정의하기가 조금 늦다. –
데이터 항목과 그 심볼의 예를 원하는 객체와 바이너리에 제공한다. 예제를 기본적으로 제공한다. –