gcc 컴파일 과정
Language/C 2011. 8. 23. 15:19c언어로 작성된 파일이 있다하자. 그 파일 이름이 hello.c 라 가정한다. 그럼 다음과 같이 컴파일을 할 것이다.
컴파일을 하면 다음과 같은 순서로 이루어진다.
★ 컴파일 과정
ex> hello.c
2. 전처리 후 소스( .i ) - 전처리가 끝이 나면 i 확장자를 가진 파일이 생성된다.
본격적으로 C언어를 기계어로 변환하기 시작한다.
3. 어셈블리소스 ( .s ) - 기계어와 가장 유사한 상태인 어셈블리어로 변환 된 s 확장자를 가진
파일이 생성된다.
4. 오브젝트 파일( .o ) - 2진수로 이루어진 기계어로 된 파일이 생성된다. 확장자는 o이다.
5. 실행파일 ( .exe ) - 링크에 의해 실행 할 수 있는 파일을 생성한다.
전처리에서 어셈블리까지의 과정에서 중간 파일이 생성된다. 하지만 실행파일이 생성되면 그 과정에 생성되는 중간 파일들은 모두 삭제된다. 중간 파일의 내용이 궁금하다면 중간 파일만 생성하는 gcc 옵션들이 있다. 중간 파일만 생성하는 방법을 알아보자.
★ 중간 파일 생성 방법
1. 전처리 단계
(hello.c 소스코드를 전처리 해서 hello.i 파일에 저장한다.)
2. 어셈블리 파일 단계
(hello.c 소스코드를 컴파일해서 hello.s 어셈블리어 소스로 저장한다.)
3. 오브젝트 파일 단계
(hello.c 소스코드를 컴파일해서 링크 전 단계인 오브젝트 파일 hello.o 를 생성한다.)
특정 단계까지만 컴파일하면 번거롭다 이를 모두 저장해주는 옵션 또한 존재한다. 컴파일 과정을 모두 출력하면서 각 단계마다 생성되는 중간 파일을 삭제하지 않고 모두 저장해주는 옵션이 있다.
★ 전체 단계를 화면에 출력 및 저장하는 방법
1. -v 옵션
컴파일되는 과정을 화면으로 출력한다.
2. --save-temps 옵션
컴파일 과정에서 발생되는 중간 파일을 지우지 않고 저장한다.
< 컴파일 과정 출력화면 >
< 생성 파일 >
'Language > C' 카테고리의 다른 글
[Linux/Unix]make 명령 코드 구현하기 (0) | 2011.08.23 |
---|---|
make (Makefile) (1) | 2011.08.23 |
Pthread API Reference (0) | 2011.08.23 |
static 함수 (0) | 2011.08.23 |
static 전역 변수 (0) | 2011.08.23 |