링커란 무엇이며 어떻게 작동합니까?
링커는 객체 파일과 라이브러리를 연결해 실행 파일을 생성하는 소프트웨어의 일종이다. 이는 운영 체제, 응용 프로그램 및 기타 소프트웨어 개발에 사용됩니다. 링커는 컴파일러와 라이브러리에 의해 생성된 개체 파일을 입력으로 사용하고 실행 파일을 출력으로 생성합니다.
Linkers는 다음을 포함한 여러 기능을 수행합니다.
1. 기호 참조 해결: 프로그램이 고급 언어로 작성되면 현재 소스 코드에 정의되지 않은 함수나 변수에 대한 기호 참조가 포함될 수 있습니다. 링커는 다른 개체 파일이나 라이브러리에서 함수나 변수의 정의를 찾아 이러한 참조를 해결합니다.
2. 코드 및 데이터 재배치: 컴파일러에 의해 객체 파일이 생성되면 객체 파일 위치에 상대적인 코드와 데이터가 포함될 수 있습니다. 링커는 이 코드와 데이터를 실행 파일의 올바른 위치에 재배치합니다.
3. 불필요한 코드 및 데이터 제거: 링커는 최종 실행 파일에서 필요하지 않은 코드 및 데이터를 제거하여 크기를 줄이고 성능을 향상시킬 수 있습니다.
4. 실행 파일 만들기: 링커는 개체 파일과 라이브러리를 입력으로 사용하고 대상 컴퓨터에서 실행할 수 있는 실행 파일을 생성합니다. 다음을 포함하여 여러 유형의 링커를 사용할 수 있습니다. 동적 링커: 이 링커는 종속된 라이브러리 및 기타 개체 파일에 대한 참조가 포함된 실행 파일을 만듭니다. 프로그램이 실행되면 동적 링커는 이러한 종속성을 로드하고 런타임 시 모든 기호 참조를 확인합니다. 정적 링커: 이 링커는 내부에 포함된 모든 종속성을 포함하는 실행 파일을 만듭니다. 이는 추가 종속성 없이 프로그램을 실행할 수 있다는 의미이지만 실행 파일의 크기가 더 커진다는 의미이기도 합니다.
3. 공유 링커: 이 링커는 여러 프로그램에서 사용할 수 있는 코드 및 데이터 모음인 공유 라이브러리를 포함하는 실행 파일을 만듭니다. 프로그램이 공유 라이브러리에 링크되면 필요한 특정 기능과 변수만 최종 실행 파일에 포함됩니다. 요약하자면 링커는 컴파일러에서 생성된 개체 파일을 가져오기 때문에 소프트웨어 개발 프로세스의 필수적인 부분입니다. 및 라이브러리를 만들고 대상 컴퓨터에서 실행할 수 있는 실행 파일을 만듭니다. 기호 참조 확인, 코드 및 데이터 재배치, 불필요한 코드 및 데이터 제거, 실행 파일 생성 등 여러 기능을 수행합니다. 동적, 정적 및 공유 링커를 포함하여 여러 유형의 링커를 사용할 수 있습니다.