컴퓨터는0과 1로 이루어진 이진코드(바이너리 코드)만 이해 할 수 있습니다.
따라서 C/C++언어로 컴퓨터에게 명령을 내릴 때에는
C/C++언어를 이진코드(기계어)로 번역하는 과정이 필요합니다.
▼ 소스 코드가 실행 파일이 되기까지의 과정
전처리기
#으로 시작하는 지시자에 따라 실행파일 생성에서 가장 먼저 실행됩니다.
소스 코드의 주석 제거, define 치환 등.
컴파일러
전처리기를 거친 소스 코드는 컴파일러에 의해서 어셈블리 코드로 변환됩니다.
어셈블리 코드는 CPU 명령어 조합입니다.
(어셈블리어는 CPU에 의존적)
어셈블러
컴파일러를 거친 어셈블리 코드는 어셈블러에 의해서 오브젝트 코드로 변환됩니다.
오브젝트 코드는 0과 1로 구성된 이진 코드이며, 주소 정보는 확정되지 않은 상태입니다.
링커
어셈블러를 거친 오브젝트 코드는 링커에 의해 하나로 묶여 실행 파일로 변환됩니다.
운영체제의 Loader가 로딩할 수 있도록 주소 정보를 적절하게 할당.
(링커는운영체제에 의존적)
<출처 : http://blog.naver.com/seisro/100161911435>