컴퓨터 공학 & 통신
[개념 정리/운영체제] 프로그램 컴파일 과정
왈왈디
2023. 7. 26. 11:27
728x90
프로그램 컴파일
프로그램은 사람이 소스 코드를 작성하면,
컴파일러가 컴파일 과정을 거쳐
컴퓨터가 이해할 수 잇는 기계어로 번역하여
실행될 수 있는 파일로 변환된다.
프로그램의 컴파일 과정은
아래의 4단계로 구분될 수 있다.
- 전처리: 소스코드의 주석 제거, #include 등 헤더파일을 병합하고, 매크로를 치환한다.
- 컴파일러: 오류 처리, 코드 최적화 작업을 하여 어셈블리어로 변환한다.
- 어셈블러: 어셈블리어는 목적코드(object code)로 변환된다. 확장자는 운영체제마다 다르나, 리눅스에서는 .o이다. a.c라는 파일을 만들면 a.o라는 파일이 만들어지게 된다.
- 링커: 프로그램 내의 라이브러리 함수 등과 결합하여 실행파일이 만들어진다. .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