gcc, GCC   GNU Compiler, GNU Compiler Collection   GNU 컴파일러

(2024-01-09)

gcc 컴파일러, GNU C 컴파일러, GNU 컴파일러 컬렉션


1. GCC (GNU Compiler Collection)리눅스(Linux) 환경에서, 각종 프로그래밍 언어 소스를 컴파일하기 위한 컴파일러 기능 제공 환경
     - 컴파일 가능 언어 例) C, C++, Objective C, Fortran, Pascal, Ada, Java 등
     - 실행가능 타깃 머신 例) Intel, ARM, PowerPC, Motorola, Sparc 등


2. GCC 특징

  ㅇ gcc에 포함된 프로그램들
     - cpp  :  전처리기
     - ccl  :  컴파일러
     - as  :  어셈블러
     - ld  :  링커

     * (소스 파일) -> 전처리기(cpp) -> 컴파일러(ccl) -> (어셈블러 파일) -> 어셈블러(as)
       -> (오브젝트 파일, 기계어 형태) -> 링커(ld) -> (실행 파일)

  ㅇ gcc 컴파일러는, 폭넓은 언어,타깃 머신들을 지원하기 위해, 모듈식으로 설계됨
     - Front-end : 각 언어별로 Scanner, Parser 구현
     - Mid-end : 코드 최적화(Code Optimization) 구현
     - Back-end : 코드 생성(Code Generation) 
     - 최종 출력물은, 어셈블리 언어 형태 임


3. 사용 방식

  ㅇ 옵션 例)
     - v  :  설치정보 및 버전
     - o < 파일명 >  :  출력을 지정한 명칭으로 저장 
     - E  :  전처리 만 수행 (컴파일 x,어셈블 x), 그 결과를 표준 출력(stdout)에 보여 줌
     - S  :  컴파일까지 만 수행 (어셈블 x, 링킹 x)
     - c  :  전처리,컴파일,어셈블까지 수행 (링킹 x)
     - g  :  운영체제 고유 형식으로 디버깅 정보 만듬
     - O1, O2, O3  :  코드 최적화
     - std  :  각 언어별 표준 심볼
     - Wall  :  발생 가능 모든 오류에 대한 경고
        . 例) 헤더 파일 누락이 있으면, 그와 관련 함수 원형에 대해 추정을 했다고 경고하는 등 
     - l  :  표준 라이브러리가 아닌 라이브러리를 사용하려고 할 때, 그 라이브러리를 지정해줌
        . 例) gcc -o main main.o -lm (수학 라이브러리)

     * gcc 컴파일러 옵션 온라인 보기 ☞ GCC Option Index

  ㅇ 사용 例)
     -  gcc 소스파일.c  =>  a.out  :  (-o 옵션 없으면, 실행 파일명이 a.out이 됨)
     -  gcc 소스파일.c -o 출력파일명  :  (실행파일로써 출력파일명 지정)
     -  gcc 소스파일.c -S  :  (어셈블러파일.S 출력됨)
     -  gcc 소스파일.c -c  :  (오브젝트파일.o 출력됨)
     -  gcc object_file.o -o 출력파일명  :  (오브젝트파일로부터, 실행파일이 출력됨)  

     -  g++ 소스파일명 -o 출력파일명  :  (C++ 언어 컴파일인 경우)

C 언어 컴파일
   1. 라이브러리   2. C 라이브러리   3. 전처리 지시자   4. GNU C 컴파일러  


Copyrightⓒ written by 차재복 (Cha Jae Bok)               기술용어해설 후원
"본 웹사이트 내 모든 저작물은 원출처를 밝히는 한 자유롭게 사용(상업화포함) 가능합니다"