컴퓨터 공학 & 통신

[개념 정리/운영체제] 프로그램 컴파일 과정

왈왈디 2023. 7. 26. 11:27
728x90

프로그램 컴파일

프로그램은 사람이 소스 코드를 작성하면,

컴파일러가 컴파일 과정을 거쳐 

컴퓨터가 이해할 수 잇는 기계어로 번역하여

실행될 수 있는 파일로 변환된다.

 

프로그램의 컴파일 과정은

아래의 4단계로 구분될 수 있다.

 

  1. 전처리: 소스코드의 주석 제거, #include 등 헤더파일을 병합하고, 매크로를 치환한다.
  2. 컴파일러: 오류 처리, 코드 최적화 작업을 하여 어셈블리어로 변환한다.
  3. 어셈블러: 어셈블리어는 목적코드(object code)로 변환된다. 확장자는 운영체제마다 다르나, 리눅스에서는 .o이다. a.c라는 파일을 만들면 a.o라는 파일이 만들어지게 된다.
  4. 링커: 프로그램 내의 라이브러리 함수 등과 결합하여 실행파일이 만들어진다. .exe, .out이라는 확장자를 사용한다.

 

아래는 간단한 코드를 명령어로 컴파일 시키는 과정이다.

 

<hello world! 출력 코드>

#include <bits/stdc++.h>
using namespace std;
int main(){
    cout << "hello world!\n";
    return 0;
}

 

<컴파일 명령어>

g++ -save-temps=obj -c a.cpp -o dir/foo.o

 

컴파일이 완료되면 (dir 폴더를 미리 생성한 경우)

dir 폴더에 a.ii, a.s, foo.o 파일이 생성된다.

 

* .ii: 전처리된 C++ 파일

* .s: 어셈블리어로 작성된 파일

* .o: 오브젝트 파일

 

참고: inflearn 강의 'CS 지식의 정석 - 큰돌'

728x90