링커는 다양한 소스의 여러 개체 코드 파일을 하나의 실행 파일로 결합하는 데 사용되는 컴파일러 구성 요소입니다. 주요 목적은 파일 간의 참조를 확인하고(기호 확인) 메모리 세그먼트에 대한 재배치를 수행하여 프로그램의 모든 데이터가 올바르게 연결되도록 하는 것입니다.
링커는 다양한 플랫폼에서 사용되지만 특히 개인용 컴퓨터(PC) 환경에서 널리 사용됩니다. 이는 애플리케이션 개발 프로세스에서 자주 사용되며 많은 양의 코드를 더 작고 컴팩트한 파일로 구성하는 데 사용됩니다.
링커는 일반적으로 컴파일러 패키지의 일부이며 개발 환경(정적 연결) 및 다른 라이브러리(동적 연결)의 라이브러리를 함께 연결하는 데 사용할 수도 있습니다.
링크 편집의 주요 단계는 다음과 같습니다.
1. 라이브러리 검색 – 라이브러리 목록을 검색하여 필요한 코드를 찾습니다.
2. 기호 해결 - 개체와 해당 구현 간의 참조를 해결합니다.
3. 목적 코드 결합 – 목적 프로그램을 하나의 실행 가능한 프로그램으로 결합합니다.
4. 주소 재배치 – 로드된 세그먼트가 코드에 표시된 것과 동일한 메모리 주소에 위치하지 않는 경우 코드의 참조를 조정합니다.
5. 디버깅 정보 – 보다 쉽게 디버깅할 수 있도록 디버깅 정보를 생성합니다.
링커는 추가 스크립트를 실행하여 추가 구성을 수행하고, 애플리케이션에 보안 검사를 추가하고, 다른 플랫폼과의 호환성을 보장하는 등의 작업도 수행할 수 있습니다.
컴퓨터 바이러스는 악의적인 용도, 특히 악성 코드를 감염시켜 기존 프로그램에 연결하기 위해 만들어졌습니다. 따라서 링커의 가장 중요한 작업 중 하나는 연결된 프로그램의 안전과 보안을 보장하는 것입니다.