글
(1) 전처리 과정
: 전처리 과정은 크게 두 부분으로 나눌 수 있다.
○ 첫번째 : 헤더 파일의 삽입
○ 두번째 : 매크로 치환 및 적용
(2) 헤더 파일의 삽입
: 헤더파일을 C 소스 내에 include 하면 전처리기가 include한 자리에 헤더 파일의 내용을 붙인다.
- 소스파일 내에 #include<stdio.h>를 만나면
: 시스템 헤더 파일 디렉토리로 등록된 /usr/local/include/ , /usr/lib/gcc-lib/i386-edhatlinux/3.2.2/include/,
/usr/include 디렉토리 순서로 stdio.h 파일이 있는지 찾는다.
: 이런 기본 탐색 include 디렉토리를 추가하기 위해 gcc 옵션으로 -I[include 디렉토리] 형식으로 붙이면 -I 뒤에 오는
include 디렉토리를 먼저 탐색하게 할 수 있다. (ex) gcc -I/root/include -o like like.c
- 헤더파일을 붙이는 중간에 파일 내에 기술된 #include<features.h>를 만나면
: cc1 -E는 stdio.h를 붙이는 것을 잠시 중단하고 다시 include 디렉토리를 돌면서 features.h 파일을 찾아 붙여 넣고,
stdio.h 파일의 나머지 부분을 붙여넣는다.
(3) 치환
: #define된 부분은 cc1 -E의 심볼 테이블에 저장되고 심볼 테이블에 들어있는 문자열과 같은 문자열을 만나면 #define된
내용으로 치환.
- #ifdef와 같이 소스를 선택적으로 추가, 제거하는 매크로들도 처리된다.
'L inux > Compile' 카테고리의 다른 글
컴파일(Compile)과정 - as에 의한 기계어 코드 생성 (0) | 2012.01.10 |
---|---|
컴파일(Compile)과정 - cc1에 의한 어셈블리 소스 파일로 컴파일 (0) | 2011.10.20 |
컴파일(Compile)과정 (0) | 2011.10.14 |
컴파일 (Compile) (0) | 2011.10.14 |
크로스 컴파일 (Cross Compile) (0) | 2011.10.06 |
RECENT COMMENT