C++ 언어로 작성된 프로그램이 컴파일하고 빌드하는 과정은 4단계로 나뉜다.

 

1. 전처리 단계

매크로 프로세서 라고 불리는 전처리기에 의해 이루어지며

* C언어로 작성된 소스를 문법적으로 검토하고

* 주석으로 되어있는 문장을 제거하며

* 키워드로 명시된 필요한 파일들을 읽고 실제 컴파일이 가능한 소스로 변환한다.

 

2. 컴파일 단계

컴파일러로 프로그램 소스를 어셈블리 코드로 만든다.

* 어셈블리 코드는 실행이 가능한 바이너리 코드로 만들기 전 기계어라고 불리는 가장 낮은 단계의 소스코드이다. 

 

3. 어셈블링 단계

어셈블리 코드가 어셈블러에 의해 실행 가능한 프로그램 파일의 중간단계 격인 오브젝트 코드로 변환된다.

* 오브젝트 코드는 링크 과정에 필요한 정보들을 갖고있다.

 

4. 링크 단계

링커가 오브젝트 코드와 C 또는 C++ 표준 라이브러리를 사용하여 실행 가능한 프로그램을 만든다.

 

이렇게 생성된 프로그램은

* 리눅스의 경우 커널의 로더(프로그램 실행 기능)가 요구하는 ELF(Executable and Linking Format) 포맷으로 저장된다.

* 윈도우의 경우 COFF(Common Object-File Format) 포맷으로 저장된다.

 

g++ 로 컴파일을 수행할 경우

default 옵션으로 -std=c++98 로 컴파일된다. (std는 사용하는 버전 옵션을 나타낸다.)

버전을 지정하려면 -ansi 나 -std=c++ 에 버전 번호를 덧붙여 추가로 입력해주어야 한다.

 

+ Recent posts