7.2.3. 라이브러리 스캔

링커는 일단 라이브러리 목록을 생성한 후에는 목록에 있는 각 라이브러리를 반복적으로 스캔하여 참조를 확인합니다.

모든 디렉토리를 검색하여 가장 호환성이 높은 라이브러리 변형을 선택하고 이를 라이브러리 목록에 추가하면, 필요한 구성원을 로드하기 위해 각 라이브러리를 스캔합니다.

  1. 현재 확인되지 않은 상태의 non-weak 참조가 있으면 링커는 일치하는 정의를 찾기 위해 라이브러리 목록을 순차적으로 검색합니다. 처음 찾은 정의는 2단계용으로 표시됩니다.

    검색의 순차적 특성으로 인해 링커는 두 개 이상의 라이브러리에서 동일한 심볼을 정의한 경우 목록에 먼저 나타난 라이브러리를 선택합니다. 그러면 라이브러리를 입력 파일 목록에 추가하여 예를 들어 ARM C 라이브러리와 같은 다른 라이브러리의 함수 정의를 재정의할 수 있습니다.

  2. 1 단계에서 표시한 라이브러리 구성원이 로드됩니다. 각 구성원은 로드될 때 weak 참조를 포함한 일부 미확인 참조를 확인할 수 있습니다. 라이브러리를 로드하면 미확인 weak 및 non-weak 참조가 새로 생성될 수 있습니다.

  3. 1단계와 2단계의 프로세스는 모든 non-weak 참조가 확인되거나 아니면 어떤 라이브러리로도 확인되지 않을 때까지 계속됩니다.

스캔 작업이 완료될 때 확인되지 않은 non-weak 참조가 하나라도 있으면 링커에서 오류 메시지를 생성합니다.

Copyright © 2002-2006 ARM Limited. All rights reserved.ARM DUI 0206GK
Non-Confidential