Linker, Loader   링커, 로더

(2023-10-20)

Linking, 링킹, Object File, 오브젝트 파일


1. 링커(Linker) 및 로더 (Loader)컴파일러,어셈블러에 의해 기계어로 번역된 오브젝트 파일이,
     - 바로 실행 파일이 되는 것이 아니고,  
     - 링커 및 로더를 거쳐, 
     - 비로소 실행 가능 파일 생성 및 메모리에 적재되어 실행 됨

  ㅇ 주요 역할
     - 주 기억장치의 할당(확보)
        . 프로그램의 시작 위치 결정 등
     - 연결 (Linking)
        . `시스템 API`,`미리 컴파일라이브러리`들을 사용자 프로그램에 연결시키는 것
     - 재배치 (Relocation)
     - 프로그램 연결 적재 (Loading)

  ㅇ 주요 단계
     - 소스 프로그램 
     - (컴파일러) 
        . 오브젝트 파일 생성
     - (링커)  <= 필요시, 연관된 다른 오브젝트 파일들이 추가됨
        . 실행 파일 생성
     - (로더) 
        . 메인 메모리 적재  <= 필요시, 동적 링크 라이브러리들이 추가됨

  ※ [참고용어]
     - 오브젝트 파일 (Object File)  :  재배치 가능 오브젝트 파일
        . 모듈별로 개발되어 컴파일된 것
        . 실제 특정 주소가 아닌, 임의의 물리 메모리 위치에 적재되도록, 설계된 것
     - 오브젝트 라이브러리 파일 (Object Library File)
        . 모듈오브젝트 파일들을 합쳐서, 1개의 라이브러리 파일로 만든 것
     - 링크/링킹 (Linking)
        . 오브젝트 파일들을 최종적으로 사용 가능하게 변환하는 것
           .. 한편, 링크 시에, 비록 덩치큰 라이브러리를 지정하지만,
           .. 이때, 자동으로 필요한 오브젝트 화일들 만을 선별 꺼내어 결합시킴
           .. 例) gcc -o main main.o -lm (수학 라이브러리) 


2. 링커 (linker)

  ㅇ 링커의 역할
     - 메인 루틴을 최초 실행 위치로 식별해 놓고, 
     - 기호가 참조되는 위치를 메모리 주소와 연결하고,
     - 모든 오브젝트 파일들을 결합시키고,
     - 이에 라이브러리까지 엮어서,
     - 하나의 실행 파일로 만드는 것
     - 주로, 오브젝트 파일라이브러리 파일에 대한 링킹 (Linking, 엮음)

  ㅇ 링커의 입력
     - 링커에 입력이 되는 파일이, 중간 화일컴파일오브젝트 파일3. 로더 (loader)

  ㅇ 재배치 가능한 기계어 프로그램을 입력으로하여,
     - 메모리 상의 절대 주소를 갖는 동등프로그램을 생성 (연결 적재)
     
  ㅇ 이진 실행 파일을 메모리에 적재하여,

  ㅇ 동적 로드/로더 (Dynamic Load)    ☞ 동적 연결 라이브러리 참조
     - 전체가 실행 시점에 사용되는 방식

컴파일러
   1. 컴파일   2. 전처리   3. 어휘 분석, 구문 분석, 의미 분석   4. 링커 및 로더   5. 형식 언어   6. 유한상태 머신   7. BNF,EBNF  


Copyrightⓒ written by 차재복 (Cha Jae Bok)       기술용어해설소액후원
"본 웹사이트 내 모든 저작물은 원출처를 밝히는 한 자유롭게 사용(상업화포함) 가능합니다"