리눅스
[ 리눅스 ] C언어 GCC 컴파일 과정( Ubuntu 20.04 ) - Preprocessing, Compilation, Assembly, Link
myo-kyeong
2023. 5. 23. 20:47
728x90
반응형
C언어 컴파일 과정은 크게 전처리(Preprocessing), 컴파일(Compilation), 어셈블(Assembly), 링크(Link) 4단계로 나눌 수 있습니다.
[ helloworld.c 파일 생성 ]
nano helloworld.c
#include <stdio.h>
int main() {
printf("Hello, World!\n");
return 0;
}
전처리 ( Preprocessing )
- #define, #include 와 같은 전처리 지시어를 처리
- #include <stdio.h> : 컴파일러에게 stdio.h라는 헤더 파일의 내용을 현재 위치에 삽입하도록 지시
- 'helloworld.i' 파일 생성
gcc -E helloworld.c -o helloworld.i
컴파일 ( Compilation )
- 전처리된 소스 코드를 받아 어셈블리 코드로 변환
- 코드의 문법 오류를 체크하고 이상이 있다면 오류 메시지 출력하고 컴파일 중지
- 'helloworld.i' 파일이 컴파일되어 'helloworld.s' 파일 생성
gcc -S helloworld.i -o helloworld.s
[ helloworld.s 어셈블리 코드 ]
어셈블 ( Assembly )
- 어셈블리 코드가 기계어 코드로 변환
- 'helloworld.o' 오브젝트 파일 생성
gcc -c helloworld.s -o helloworld.o
링크 ( Linking )
- 오브젝트 파일과 라이브러리를 링크하여 실행 가능한 파일 생성
- 'helloworld.o' 오브젝트 파일 링크되어 'helloworld' 실행 파일 생성
gcc helloworld.o -o helloworld
./helloworld
728x90
반응형