[그림 1]을 보면 compiling 구간-> compile
=> Compiling + Linking == 큰 의미의 컴파일
=> compling == 작은 의미의 컴파일
=> 프로그래머가 작성한 코드 -> source file(.cpp, .c)
=> 프로그램 빌드(Compiling + Linking) 진행 -> .exe 파일 전송
![]() | ![]() |
---|
[그림 2]를 보면 실행 파일은
=> 목적 파일(Object file) + 라이브러리 파일(Library file)
=> 컴퓨터의 발전으로 인한 디스크 용량 up, 램의 성능 up됨에 따라 프로그램의 크기도 늘어남
=> 즉 한 파일에 모든 소스 코드 작성할 수 없음
=> "그래서!!" 파일들을 분리해서 관리하는 것
[그림 3]을 보면
=> 1번째 과정에서는 오프젝트 파일에 있는 동일한 섹션들을 하나의 덩어리로 합침
=> 여기서 링커가 하는 일은? --> 라이브러리 합치는 것
=> 예를 들어,
1. cout(입/출력 라이브러리 함수)클래스 라이브러리 사용
2. cout이 포함되어 있는 문장을 출력하기 위해 오브젝트 파일들을 다 하나로 링크
3. .exe파일에 라이브러리를 집어넣는 것 -> static linking