본문 바로가기
프로그래밍/CS

[유닉스] gcc 컴파일 정리

by 엽기토기 2020. 12. 23.
반응형

<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 디버깅 정보 삽입
 
 
 

반응형