
What is Linking?

- 프로그래밍 언어에서 작성한 소스 코드 파일들을 하나의 실행 가능한 프로그램으로 결합하는 프로세스를 가리킨다.
- 프로그램의 여러 부분을 하나로 연결하여 실행 파일을 생성하는 프로세스를 말한다.
- 프로그램 실행을 계속하기 위해 프로그램의 모든 모듈이나 모든 기능 사이에 링크를 설정하는 것을 말한다.
- 링크는 코드와 데이터 조각을 단일 파일로 수집 및 유지하는 프로세스이다.
- Linker는 또한 특정 모듈을 시스템 라이브러리에 연결한다.
- 어셈블러의 개체 모듈을 입력으로 사용하고 로더의 출력으로 실행 파일을 형성한다.
- 링크는 소스 코드 → 기계어 코드로 변환되는 컴파일 타임과 로더에 의해 프로그램이 메모리에 로드되는 로드 타임에 모두 수행된다.
- 링크는 프로그램 컴파일의 마지막 단계에서 수행된다.
- Linking은 어셈블러에서 생성된 개체 코드를 가져와 실행 가능한 모듈을 생성한다.
- 프로그램 실행을 계속하기 위해 프로그램의 모든 모듈이나 모든 기능 사이에 링크를 설정하는 것을 링크라고 한다.
- 링크는 코드와 데이터 조각을 단일 파일로 수집하고 유지하는 프로세스다.
- 특정 모듈을 시스템 라이브러리에 연결한다.
- 어셈블러의 개체 모듈을 입력으로 사용하고 로더의 출력으로 실행 파일을 형성한다.
- 컴파일 타임과 로드 타임에 모두 수행되며, 프로그램 컴파일의 마지막 단계에서 수행된다.
- 정적 연결과 동적 연결이 있다.
- 앱이나 프로그램을 빌드할 때 실행을 위해 라이브러리나 다른 프로그램을 연결해야 한다.
- 연결이란 성공적인 실행을 위해 외부 프로그램을 운영 체제와 결합하는 방식을 의미한다. 이를 달성하는 방법에는 정적 연결과 동적 연결이라는 두 가지 주요 방법이 있다.
Static Linking
- 정적으로 링크된 프로그램은 실행을 위해 메모리에 로드될 때마다 일정한 로드 시간이 걸린다.
- 정적 링크는 프로그램 컴파일의 마지막 단계로 Linker라는 프로그램에 의해 수행된다.
- Linker는 링크 편집기라고도 한다.