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){ |
옵션 |
설명 |
-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을 우선적으로 검색) /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|작성자 로사