C 프로그래밍 : C 컴파일러 [gcc](Scrap)
C 프로그래밍 C 컴파일러 : gcc
C 코드를 작성하고 나서 컴파일을 하려 할때 기본적을 gcc 컴파일러를 많이 쓰게 된다.
GNU에서 제공하는 gcc 컴파일러를 이용하여 UNIX 시스템에서 컴파일하고, 목적파일을 생성하며, 라이브러리를 링크 시키는 과정을 알아본다.
유닉스에서 C 프로그래밍을 하면서 부터 이런 컴파일러에 대한 개념이 많이 부족하여 공부할 겸 포스팅을 작성하게 되었으며, 이 포스팅의 내용은 [실무 전문가가 짚어주는 UNIX] 란 서적을 참고하였다.
gcc
기본적으로 gcc 를 이용하여 컴파일을 해보자.
우선 가장 기본적인 "Hello world !!" 를 작성하고 gcc를 이용하여 컴파일 해본다.
hello.c
#include <stdio.h>
int main( void ){
printf("HELLO WORLD !! \n");
return 0;
}
[컴파일] gcc hello.c
[실행] ./a.out
목적(Object) 파일 생성 [ -c 옵션 ]
목적파일은 컴퓨터가 이해할 수 있도록 구성되어 있는 기계어로 저장된 파일이다.
C컴파일러는 정확하게 말해서 그 자체가 컴파일러라기보다는 소스파일을 읽어 실행파일을 만드는데 필요한 각 단계별 명령어를 호출하는 연결자라고 할 수 있다. 즉, gcc 와 같은 C 컴파일러는 입력받은 소스파일을 기반으로 cpp, cc1, as, ld 명령어를 순차적으로 호출하여 실행파일을 만든다.
실행파일이 만들어지기까지 소스파일이 거치는 단계별 과정은 다음과 같다.
1. 전처리 단계 - 전처리기 (cpp)
: #include, #define 등 #으로 시작하는 문법 사항이 적절히 전처리된 C 언어 소스파일 생성
2. 컴파일 단계 - 컴파일러 (cc1)
: C 언어 소스파일은 컴파일 과정을 거쳐 어셈블리 소스 파일이 됨
3. 어셈블 단계 - 어셈블러 (as)
:어셈블리 소스 파일은 어셈블 과정을 거쳐 목적 파일이 됨
4. 링크 단계 - 링커 (ld)
: 목적 코드는 라이브러리와 링크되어 실행 가능한 파일이 됨
그렇다면, -c 옵션을 이용하여 목적파일을 통하여 실행파일을 만들어 본다.
gcc -c main.c
gcc -c fun1.c
gcc -c fun2.c
gcc -o main main.o fun1.o fun2.o
'System Programming > C/C++ 프로그래밍' 카테고리의 다른 글
| C 프로그래밍 : C 컴파일러 [gcc] (0) | 2012.11.01 |
|---|---|
| C 프로그래밍 : qsort 사용하기 (1) | 2012.10.23 |
| C 프로그래밍 : fgets() 함수 사용시 라인 끝 개행 제거 하기 (0) | 2012.10.10 |
| C 프로그래밍 : 인자값(아규먼트) 받기 - argc , argv (0) | 2012.10.10 |
| C 프로그래밍 : 피보나치수열 - 재귀함수 사용 (1) | 2012.10.09 |
| C 프로그래밍 : 파일 및 디렉토리 개수 구하기 (scandir) (2) | 2012.08.17 |