<GCC 컴파일러>
gcc 컴파일러란?
GNU에서 만든 C컴파일러
컴파일 의미
인간이 이해할 수 있는 언어로 작성된 소스코드를 CPU가 이해할 수 있는 기계어로 번역하는 과정
컴파일 과정
like.c (c소스) -> cppo or cc1-E (전처리기) -> like.i (전처리 파일) -> cpp (c컴파일러) -> like.s (어셈블리파일) -> as (어셈블러) -> like.o (오브젝트파일) -> id or collect2 (링크) -> like 실행파일
전처리 과정 (cc1-E)
1. 헤더파일 삽입 (함수 사용 전에 함수 타입 선언 필요)
2. 매크로 치환 및 적용
어셈블리 소스 파일로 컴파일 과정 (cc1) (like.i -> like.s)
like.i (전처리파일) -> front-end (C,C++,JAVA,...) -> 중간표현 (GIMPLE 트리) -> middle-end -> 중간표현 (/RTL) -> Back-end (x86, ARM, mips,...) -> like.s
전단부(front) : 소스코드가 올바르게 작성되어있는지 분석, GIMPLE 트리 생성
중단부(middle) : GIMPLE 트리 이용, 아키텍쳐 비종속적인 최적화하여 /RTL 생성
후단부(Back) : 아키텍처 비족속 + 종속 최적화 수행후 어셈블리 코드 생성
링킹과정 (collect2)
as에 의해 만들어진 오브젝트 파일을 표준 C 라이브러리와 링크시킨다.
옵션
-f 플래그
-W 합법적이지만 모호한 코딩 경고
-Wall 모든 모호한 코딩 경고
-v 컴파일 수행과정 화면에 출력
-c 오브젝트 파일까지만 생성하고 컴파일 멈춤
-S 어셈블리 파일까지만 생성하고 컴파일 멈춤
-save-temps 중간파일인 전처리파일과 어셈블리 파일과 오브젝트파일을 저장
-E 전처리과정의 결과를 화면에 보여줌
-o like 컴파일된 파일명을 like로.
-DDEBUG
#define DEBUG와 동일
-DPACKAGE=\“likeU\”
#define PACKAGE “likeU”와 동일
-g 디버깅 정보 삽입
'프로그래밍 > CS' 카테고리의 다른 글
[유닉스] make 정리 (0) | 2020.12.23 |
---|---|
[유닉스] gdb 디버거 정리 (0) | 2020.12.23 |
[유닉스 이론과 실습] 7장 실습 (0) | 2020.12.23 |
[유닉스 이론과 실습] 8장 연습문제 (0) | 2020.12.23 |
[유닉스 이론과 실습] 5장 연습문제 (0) | 2020.12.23 |