C 언어 구조, 기능에 대한 전반적인 이해 및 기초 문법
C 언어의 주요 특징
- 많은 운영체제가 C 언어를 포함
- 시스템 깊숙한 곳의 접근/조종이 쉬움
- C#, C++ 등 다른 언어의 학습이 빠름
- 빠른 동작속도
- 절차지향적
컴파일(Compile)은 작성한 코드를 컴퓨터가 이해할 수 있게 변환하는 과정을 의미한다.
gcc -0 hello hello.c
GCC 컴파일러 드라이버는 소스파일 hello.c를 읽어서 실행파일인 hello로 번역한다. 네 단계를 실행하는 프로그램들(전처리기, 컴파일러, 어셈블러, 링커)을 합쳐서 컴파일 시스템이라고 부른다.
- 전처리 단계: 전처리기(cpp)는 본래의 C 프로그램을 #문자로 시작하는 디렉티브(directive)에 따라 수정한다.
- 컴파일 단계: 컴파일러(cc1)는 텍스트파일 hello.i를 텍스트파일인 hello.s로 번역하며, 이 파일에는 어셈블리어 프로그램이 저장된다.
- 어셈블리 단계: 어셈블러(as)가 hello.s를 기계어 인스트럭션으로 번역하고, 이들을 재배치가능 목적프로그램의 형태로 묶어서 hello.라는 목적파일에 그 결과를 저장한다.
- 링크 단계: 링커 프로그램(ld)은 통합작업을 수행한다. 그 결과인 hello 파일은 실행가능 목적파일로 메모리에 적재되어 시스템에 의해 실행된다.