티스토리 뷰
컴파일러의 실행 단계
- 많은 수의 컴파일러는 다음과 같은 순서를 거쳐 소스 코드를 번역한다.
- 컴파일러의 특성상 일부 단계는 생략되거나 더 세부화가 될 수도 있다.
- C언어는 사용자가 제작한 소스 파일을 실행파일로 만드는데 1. Preprocess, 2. Compile, 3.Link 이 세 가지 과정을 거친다.
Preprocess(전처리)
- 소스파일 내부에 있는 전처리 명령을 수행하는 과정이다.
- 전처리 명령은 소스파일 내부에 ‘#’으로 시작되는 명령어들이며 이 명령어들은 Preprocessor(전처리기)가 이 명령어들을 수행하게 된다.
-전처리 명령어는 주로 소스파일을 컴파일 하기 전에 어떤 형태로 컴파일 할지 결정하거나, 소스코드의 가동성을 높이는 등의 역할을 수행하게 된다.
Compile(컴파일)
- 소스파일을 컴파일러를 이용해 기계어로 번역하는 과정이다.
- 번역하는 과정에서 C언어 문법에 맞지 않거나 표준을 따르지 않으면, 컴파일 에러나 경고를 발생시키고, 아무런 문제 없이 과정을 마치게 되면 기계어로 번역된 ‘*.obj’파일을 생성하게 된다.
Link(링크)
- 컴파일 과정에서 생성된 ‘*.obj’파일과 소스코드에서 사용되는 함수들이 들어있는 ‘*.lib’파일을 이용하여 실행 가능한 파일을 만드는 과정이다.
- 실행파일을 만드는 과정에서 소스코드가 사용하는 변수나 함수가 주어진 파일에 존재 하지 않을 경우 이 과정에서 오류가 있다고 알려주며, 아무런 문제없이 과정을 마치게 되면 실행이 가능한 ‘*.exe’파일을 생성한다.
-I 파일
- 전처리 과정인 #include, #define, #if와 같이 #으로 시작되는 전처리 단계를 거치면 “소스명.i”라는 이름의 임시파일로 생성되지만 컴파일에 사용된 후 자동으로 삭제되어 디스크에 남지 않는다.
-오브젝트(OBJ)파일
- 목적 코드 또는 목적 파일은 컴파일러나 어셈블러가 소스 코드 파일을 처리하는 도중 만들어내는 코드의 대표이다.
(목적 코드 또는 목적 파일은 컴파일러나 어셈블러가 소스 코드 파일을 컴파일 또는 어셈블해서 생성하는 파일이다.)
- 목적 파일들은 "이진 파일"이라고 불리는 밀집된 코드를 포함하고 있다.
- 목적 파일에서 유일하게 필수적인 요소로는 기계어(컴퓨터의 CPU가 직접 실행하는 코드)가 있다.
'programming > c, c++' 카테고리의 다른 글
[C언어]프로그래밍 문제만들기 2 - 서브넷 마스크 계산기 (0) | 2017.12.16 |
---|---|
[C언어]프로그래밍 문제만들기 1 - 문자열 피라미드 (0) | 2017.12.16 |
[C언어]고급언어와 저급언어(기계어, 어셈블리어) (0) | 2017.12.16 |
[C언어]전처리기의 특징, 헤더 파일 (0) | 2017.12.16 |
[C언어 프로젝트]효민타자연습기 (0) | 2017.12.15 |
- HackCTF
- ebp change
- pwnable
- heap
- codegate
- 해킹
- srop
- SQLi
- rt_sigreturn
- oob
- stack reusing
- pwable
- pwnable.tw
- overflow
- hacking
- shellcoding
- fastbindup
- glibc
- exit
- FSB
- fsop
- TLS
- fastbin
- 본선가고싶다
- tcache
- Total
- Today
- Yesterday