rlawnsghtest 2024. 2. 17. 16:37

링커 스크립트는 소프트웨어 개발에서 사용되는 링커(linker) 도구에 의해 사용되는 특별한 파일입니다. 링커는 컴파일된 오브젝트 파일을 연결하여 실행 가능한 프로그램 파일을 생성하는 작업을 담당합니다. 이때 링커는 링커 스크립트를 사용하여 프로그램의 메모리 맵(mapping)을 결정하고, 섹션(section)의 배치를 제어합니다.

 

 

링커 스크립트는 주로 다음과 같은 내용을 포함합니다:

  1. 메모리 영역 및 섹션 정의: 링커 스크립트는 프로그램이 실행될 메모리 영역을 정의하고, 각 섹션을 해당 메모리 영역에 매핑합니다. 예를 들어, 프로그램 코드와 데이터가 저장될 ROM 영역과 RAM 영역을 정의하고, 각각의 섹션을 이에 맞게 배치합니다.
  2. 섹션 배치 및 크기 지정: 각 섹션의 배치와 크기를 명시적으로 지정할 수 있습니다. 이를 통해 특정 섹션을 메모리의 특정 영역에 위치시키고, 필요한 크기로 할당할 수 있습니다.
  3. 시작 코드 및 초기화 루틴: 프로그램이 시작될 때 실행되는 초기화 코드나 시작 루틴의 위치를 정의할 수 있습니다.
  4. 심볼 정의: 외부 심볼(external symbol)의 위치를 지정하거나, 내부 심볼(internal symbol)을 정의할 수 있습니다. 이는 다른 오브젝트 파일이나 라이브러리에서 참조하는 심볼들의 해결을 도와줍니다.
  5. 특정 하드웨어 요구사항: 특정 하드웨어 특성에 따라 메모리 배치를 조정하거나, 인터럽트 벡터 테이블의 위치를 지정할 수 있습니다.

링커 스크립트는 주로 프로젝트의 빌드 설정 중 하나로 사용되며, 컴파일러나 통합 개발 환경에서 지정됩니다. 사용자가 직접 링커 스크립트를 작성할 수도 있지만, 일반적으로는 툴체인에 포함된 기본 스크립트를 기반으로 수정하거나 추가하는 방식을 선호합니다.

링커 스크립트를 수정하는 것은 프로그램의 동작과 성능에 큰 영향을 미칠 수 있기 때문에 신중히 처리해야 합니다. 특히 잘못된 메모리 매핑이나 섹션 배치는 프로그램이 예상대로 동작하지 않거나, 런타임 오류를 발생시킬 수 있습니다.