프로그래밍을 과정으로 나누어 보면 크게 3가지 과정으로 나누어 볼 수 있다.
- 코딩 단계
- 컴파일 단계(소스파일→...→목적파일)
- 링킹 단계(목적파일→실행파일)
코딩단계란 말 그대로 코딩(프로그램 언어를 이용하여 작성)을 하여 소스파일을 만드는 것이며,
컴파일 단계는 소스파일을 컴파일러가 목적파일들로 변환시키는 과정이다.
마지막으로 링킹 단계로 목적파일들을 링커가 연결하여 일반 사용자가 사용하는 .exe프로그램으로 변환된다.
비유를 해보자면 마인크래프트 집짓기와 같다고 보면 된다. 코딩 단계는 무슨집(프로그램)을 만들지 구상하여 설계하는 단계(코딩 단계)라고 볼 수 있다.
☞소스파일 생성(확장자 = c)
△만들기전 집 상상
설계(코딩단계)를 끝내면 이제 집만들기 위한 벽돌들을 만들어낸다.(컴파일 단계)
☞소스파일(.c)→목적파일(.obj)
△벽돌 만들기
벽돌을 다만들었으면 이제 벽돌을 붙여서 집을 만든다.(링킹 단계)
☞목적파일(.obj)→실행파일(.exe)
△집 완성(아..)
목적파일이란 무엇인가?
목적파일이란 기계어로 이루어진 소스이다.
기계어는 컴퓨터가 이해 할 수 있는 언어라는 뜻으로 0과1이 난무한다. ex)010100001101001110110111...
하지만 여러개의 목적파일(건출재료처럼)로 나뉘어져 있기에 이걸을 합쳐(링킹단계) 프로그램을 만들게 된다.
왜 목적파일이 필요한가?
결론만 먼저 말하자면 속도와 생산성을 위해서이다.
만약 목적 파일없이 간단한 프로그램을 만들때면 문제 없지만 프로그램이 커질수록 프로그램을 만들때 마다 오래 걸리게 된다.
반대로 미리 목적파일로 만들어 둔 후 수정된 소스만 수정한다면 시간이 절약된다.
뿐만 아니라 다른 프로그램의 기능을 추가 할대 미리 만들어 둔 소스를 참조할때도 미리 목적파일이 만들어져 있으면 편리하다.
목적파일이 만들어 지는 과정은?
전처리 과정 : 전처리 지시어를 C언어 소스코드로 변환시킨다.
컴파일 과정 : C언어 소스코드를 어셈블리어로 변환시킨다.
어셈블 과정 : 어셈블리어로 된 코드를 기계어로 변환시킨다.
하지만 요즘은 컴파일과 링킹을 동시에 하는 에디터 프로그램(IDE)들이 많아져 입문하기에는 모든기능이 내장된 IDE를 통해 공부하는 것을 추천한다.