1. 일반적인 옵션

 옵션

설명 

 -dumpmachine  컴파일러의 타겟을 출력하고 종료됨
 -dumpspecs  GCC의 기본 스펙 문자열 표시
 -dumpversion  컴파일러의 버전 숫자를 표시
 --help  기본적인 사용에 대한 도움말 표시
 -pass-exit-code  컴파일 과정에서 실패하는 경우 가장 큰 에러 값을 반환
 -pipe

 컴파일 과정에서 정보를 주고 받는 방법으로

                                                                  중간 파일이 아닌 pipe를 사용

 -print-file-name=lib  라이브러리 경로를 표시
 -print-libgcc-file-name  컴파일러의 라이브러리 경로를 표시
 -print-multi-directory  libgcc 모든 버전의 루트 디렉토리를 표시
 -print-multi-lib  명령 행 옵션과 다수의 라이브러리 디렉토리 사이의 관계를 표시
 -print-prog-name=prog  prog 프로그램의 경로를 표시
 -print-search-dirs  디렉토리 검색 경로를 표시
 -save-temps  컴파일 도정에 생성되는 중간 파일을 저장
 --target-help  컴파일러의 타겟에서만 쓰이는 명령 행 옵션에 대한 도움말 표시
 -time  각 컴파일 과정에서의 수행 시간을 표시
 -v  각 컴파일 과정에서 실행되는 프로그램과 인자를 표시
 -V ver  컴파일러의 버전 숫자가 ver인 컴파일러를 실행
 --version  컴파일러의 버전 정보와 간단한 라이선스 정보를 표시

 

2. 전처리기 옵션 

 [test.c]

#include <stdio.h>

Int main(void){
     #ifdef TMAX
          puts(“tmax”);
     #else
          puts(“none”);
     #endif
     return 0;
}

 

 

 

 옵션

설명 

 -Dname  외부에서 name에 해당하는 #define을 지정
 -Dname=def  외부에서 name에 해당하는 매크로를 정의하고 값을 def로 지정
 -Uname  외부에서 name에 해당하는 #undef 지정
 -undef  공용,표준 매크로를 제외한 모든 매크로의 설정을 해제
 -include [헤더파일 경로]  해당 헤더 파일을 모든 소스에 추가
ex) include /root/my.h
 -M or -MM  make 파일을 위한 소스 파일의 종속 항목 출력
 -nostdinc  표준 C 헤더 파일을 include 하지 않음
 -C  전처리 과정에서 주석을 제거하지 않음
 -Wp, [옵션 리스트]  옵션 리스트를 전처리기에 바로 전달

 

3. C 컴파일러 옵션

 옵션

설명 

  -ansi  ISO C89 기능을 모두 지원하고 C89 표준과 충돌하는 GNU 확장 기능을 끔
  -no-integrated-cpp  내장된 전처리기 대신 외부 C 전처리기를 실행
 -fallow-single-precision  Single-precishion 연산을 double-precision 연산으로 변환하지 않음
  -fbuiltin  __builtin__ 접두사로 시작하지 않는 내장함수로 인식
  -fcond-mismatch  조건문에서   두 번째와 세 번째 인자의 형이 맞지 않는 것을 허용
  -fno-builtin  __builtin__ 접두사로 시작하지 않는 내장함수는 무시
  -fhosted  Hosted 환경에서 컴파일
  -fno-asm  Asm, inline, typeof를 키워드로 사용하지 않고, 식별자로 사용
  -fno-signed-bitfields  선언되지 않은 비트 필드를 unsigned형으로 간주
  -fno-signed-char  Char 형을 signed형으로 간주
  -fno-unsigned-bitfields  선언되지 않은 비트 필드를 signed형으로 간주
  -fno-unsigned-char  Char 형을 unsigned형으로 간주
  -fshort-wchar  Wchar_t 형을 강제로 shot unsigned int 형으로 간주
  -fsigned-bitfields  선언되지 않은 비트 필드를 signed형으로 간주
  -funsigned-char  Char 형을 unsigned형으로 간주
  -fwritable-strings  문자열 상수를 쓰기 가능한 데이터 영역에 저장후 프로그램상에서 쓰기 가능하도록 함
  -std=value  사용하는 언어 표준을 value에 설정C89,C99,C9x,iso9899:1990,iso9899:199409,iso9899:1999,gnu89,gnu99)
  -traditional  Traditional (K&R) C에 대한 지원을 함
  -traditional-cpp  Traditional (K&R) C 전처리기에 대한 지원을 함
  -trigraphs  C89 trigraphs에 대한 지원을 함
  -fopenmp  Open Mp를 사용 할 수 있도록 설정
  -ffreestanding

 Freestanding(unhosted) 환경에서 컴파일

(ffreestanding: 표준 라이브러리가 존재하지 않으며 이 환경에 맞게 작성된 프로그램은 반드시 main 함수에서 시작하지 않을지도 모르는 환경)

  -aux-info file  하나의 translate unit 안에서 선언된 함수에 대한형과 식별 정보를 file에 저장 (int sum(int a, int b) { return a + b; } ----> int sum(int , int );)

 

4. 디렉토리 검색 옵션

 옵션

설명 

 -B prefix

 서브 프로그램, 라이브러리, 헤더 파일 실행 시 이름에 prefix가 붙은 파일을 실행하도록 설정
 -I dir

 헤더 파일을 검색하는 디렉토리 리스트 앞부분에 dir을 추가

(dir을 우선적으로 검색)
-I를 여러 번 사용하는 경우, 왼쪽에서부터 검색
ex)$gcc –I /usr/local/include/tmax1 -I

                                                                     /usr/local/include/tmax2

 -I-  사용자 헤더파일 (“aaa.h”) –I- 사용자 or 시스템 헤더파일(<bbb.h>)
ex) $gcc /usr/local/include/tmax –I-                                            /usr/local/include/netdev
 -L dir  라이브러리 파일을 검색하는 디렉토리 리스트 앞부분에 dir을 추가
 -specs=file  표준 스펙 파일을 읽은 후에 컴파일러 스펙 파일을 읽는다.

 

※  - I 옵션의 기본동작 : 해당 경로의 시스템 헤더와 사용헤더를 모두 찾음 파일을 실행하도록 설정
       -I- 앞의 –I옵션 :해당 경로의 사용헤더만 모두 찾음
       -I- 뒤의 –I옵션 : 해당 경로의 시스템 헤더와 사용헤더를 모두 찾음

[출처] [GCC] options 1|작성자 로사

+ Recent posts