업그레이드~!!

컴파일(Compile)과 빌드(Build)의 차이점

SamSiKi 2007. 3. 2. 10:39


프로그래밍 언어에 대한 책을 읽다 보면 프로그래밍 언어와는 상관없이 컴파일이나 빌드와 같은 용어를 접하게 됩니다. 이 두 용어의 차이점은 무엇일까요?


컴파일이란 텍스트 형태로 되어 있는 소스 파일을 기계어 파일로 만드는 과정을의미합니다. 단순히 텍스트 파일로 되어있는것을 해당프로그래밍 언어의 문법에 맞는지 검사하여 특별한 오류가 없다면 기계어 파일로 변경해줍니다.

그러나 컴파일된 파일은 실행파일이 아닙니다. 다시 말하면 우리가 윈도우 환경에서 실행할 수 있는 .exe파일의 형태가 아니라는 의미죠. 비쥬얼 C++에서는 .c로 되어있는 소스코드를 컴파일하면 .obj파일로 변환합니다. 마찬가지로 리눅스나 유닉스에서도 .c로 되어있는 소스코드를 컴파일하면 .o파일로 변환합니다. 이와 같은 .obj파일이나 .o와 같은 파일들을 오브젝트 파일이라고 부릅니다.


- 현재 활성화 중인 창에 열려 있는 CPP 하나만 문법 검사 및 기계어로 변환 시킵니다.


: Visual C++ 6.0 이상에서는 단축키 Ctrl + F7


빌드는 기본적으로 실행파일을 만드는 것을 의미합니다. 사실상 하나의 소스파일이 하나의 실행 파일로 생성되기 위해서는 컴파일과정과 링크과정을 거쳐야 합니다. 링크라는 것은 말 그대로 실행파일로 만드는데 필요한 기능들을 컴파일된 파일에 연결시킨다는 의미입니다 따라서 .c파일을 컴파일한 후에 생성된 오브젝트 파일들을 이용하여 링크 작업을 해야 .exe파일이 생성됩니다.

비주얼 C++에서는 빌드를 통해서 링크 과정을 실행합니다. 만약 .c파일이 컴파일 되어있지 않은 상태에서 빌드를 실행하면 컴파일과 링크를 모두 실행하며 이미 .obj로 컴파일된 파일이 존재하면 빌드를 실행했을 때 컴파일 작업을 생략하고 링크 작업을 한후에 실행파일을 생성합니다


- 모든 CPP 문법 검사 및 기계어로 변환, 필요한 라이브러리 및 링크 등록 시킨 후 실행 파일을 제작 합니다.


: Visual C++ 6.0 이상에서는 단축키 F7


디버깅 상태에서 실행

-메모리 누수확인 가능,에러 체크,호출 스택, 중단점 사용 가능합니다.


: Visual C++ 6.0 이상에서는 단축키 F5


디버깅 없이 실행

-메모리 누스체크 및 에러가 나도 고칠 수 있는 상태가 아닙니다.


: Visual C++ 6.0 이상에서는 단축키 Ctrl + F5


VC를 다루다보면 은근히 컴파일과 빌드를 구분 못하는 경우를 많이 보는데 아무래도 단축키 탓이 아닌가 싶습니다.

엄연히 컴파일과 빌드는 다릅니다.


고로 좀 큰 프로젝트 실행시에 현재 열려 있는 창의 컴파일 시켜본 후에 빌드를 실행하는것이 좋습니다.


(출처 : http://cafe.naver.com/neosafe.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=186)

반응형