gcc 세부 옵션
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|작성자 로사