프로그래밍 언어/C_C++

[개요] gcc 컴파일러 옵션

투칼론 2016. 6. 8. 07:47
반응형

gcc는 내부적으로 아래 명령어를 호출하여 컴파일한다. gcc 옵션 설명이지만, 엄밀히 말하면 아래 단계별 명령어의 옵션이라 볼 수 있다.

  • 전처리기 : cpp0 또는 cc1 -E
  • C 컴파일러 : cc1
  • 어셈블러 : as
  • 링커 : collect2


* GCC 옵션 - 기본

 -o

 -c

 -E

 -S

 -v

 특정 파일명으로 실행 파일 생성. 설정하지 않으면 a.out 생성 됨

 오브젝트 파일(.o) 생성

 컴파일 대신에 전처리 결과를 stdout으로 출력함

 어셈블리 파일만 생성하고 컴파일 종료(.s 파일 생성됨)

 verbose 모드. 컴파일의 상세한 결과를 출력함

[참고] -save-temps 옵션은 .i, .s, .o 확장자를 가진 중간 파일을 지우지 않고 놓아둠


* GCC 옵션 - 헤더 및 매크로

 -I

 -D [매크로]

 Header 파일(.h)을 탐색하는 디렉터리 설정. #include <>에서 사용하는 Header 파일 탐색

 #define [매크로], 예를들어 -DDEBUG이면 #define DEBUG 옵션 추가



* GCC 옵션 - 경고 및 최적화

 -ansi

 -std=[표준]

 -W

 -Wall

 -w

 -Werror

 -pedantic

 -On

 ANSI C 표준으로 문법 체크, C언어에서는 -std=C90, C++언어에서는 -std=c++98

 -std=C89/C99 등 표준 옵션

 모호한 코딩에 대한 경고 출력 옵션, -Wall에서 제외한 16개 경고 메시지를 출력

 모든 모호한 코딩에 대한 경고 출력 옵션

 모든 경고 메시지 제거

 모든 경고를 에러로 간주하고 컴파일 중단

 ANSI C89 표준에서 요구하는 모든 경고 메시지 출력, -ansi와 함께 사용

 최적화 n레벨 설정 (O2 최적화 권장)



* GCC 옵션 - 디버깅

 -g

 -pg

 gdb 툴을 통해 디버깅할 수 있도록 정보 생성

 프로파일을 위한 코드 삽입



* GCC 옵션 - 링크

 -L

 -l

 -shared

 -static

 링크되는 라이브러리를 탐색하는 디렉터리 설정

 링크할 라이브러리 지정
 공유 라이브러리 우선 링크
 정적 라이브러리 우선 링크


* GCC 옵션 - 32/64bits

 -m32

 -m64

 32 비트 컴파일

 64 비트 컴파일