gcc 옵션 정리

평소에 즐겨쓰던 컴파일러인 gcc의 옵션 정리를 해봤다. 매번 책을 참고 하기는 좀 그렇고 해서 책의 부록에 나온 부분을 정리해 보았다. 물론 이 정리 부분은 추후에 추가되거나 보완될수 있다.

참고한 책은 (유닉스, 리눅스 프로그래밍) 필수 유틸리티 : vi, make, gcc, gdb, cvs, rpm 이라는 책이다.

빌린 책이라서 이렇게 정리를 해봤다. 저작권에 위배가 된다면 지우겠다. [#M_ 옵션정리 보기 | 글 닫기 |

gcc 옵션정리

gcc 전역 옵션

옵션

설명

-E

전처리 과정 화면에 출력

-S

어셈블리 파일 생성

-c

오브젝트 파일 생성

-v

컴파일 과정 화면에 출력

–save-temps

컴파일시 생성되는 중간 파일 저장

-da

컴파일 과정에서 생성되는 중간 코드 생성(RTL파일 등 생성)

전처리기(cpp0)옵션

옵션

설명

-I[패스]

헤더 파일을 탐색할 디렉토리 지정 ex_ -I/opt/include

-include [헤더 파일 패스]

해당 헤더 파일을 모든 소스 내 추가 ex_ -include /root/my.h

-D[매크로]

외부에서 #define 지정 ex_ -DDEBUG

-D[매크로]=[매크로 값]

외부에서 해당 매크로를 정의하고 값을 지정 ex_ -DDEBUG=1

-U[매크로]

외부에서 #undef 지정 ex_ -UDEBUG

-M 또는 -MM

make 기술파일을 위한 소스 파일의 종속 항목 출력

-nostdinc

표준 C 헤더 파일을 include 하지 않음

-C

전처리 과정에서 주석을 제거하지 않음

-Wp,[옵션 리스트]

옵션 리스트를 전처리기에 바로 전달

C 컴파일러(cc1) 옵션

– C언어 옵션

옵션

설명

-ansi

ANSI C 문법으로 문법 검사

-std=[C 표준]

지정한 C 표준으로 문법검사(표준:c89, c99, gnu89, gnu99 )

-traditional

K&R C 문법으로 문법 검사

-fno-asm

asm, inline, typeof 키워드를 사용하지 않음

경고옵션

옵션

설명

-Wall -W

모든 경고 메시지 출력

-w

모든 경고 메시지 제거

-Werror

모든 경고를 오류로 취급하여 컴파일 중단

-pedantic

C89 표준에서 요구하는 모든 경고 메시지를 표시

-pedantic-error

C89 표준에서 요구하는 모든 오류 메시지를 표시

-Wtraditional

ANSI CK&R C 간에 서로 다른 결과를 가져올수 있는 부분이 있다면 경고

최적화 옵션

옵션

설명

-O0

아무런 최적화를 수행치 않음

-O1 또는 -O

최적화 레벨 1수행

-O2

최적화 레벨 2 수행

-O3

최적화 레벨 3 수행

-Os

사이즈 최적화 수행

디버깅 옵션

옵션

설명

-g

바이너리 파일에 디버깅 정보 삽입

-pg

프로파일을 위한 코드 삽입

출처 : (유닉스, 리눅스 프로그래밍) 필수 유틸리티 : vi, make, gcc, gdb, cvs, rpm

정리 : http://gogamza.egloos.com

_M#]

개발에 게시되었습니다
0 0 votes
Article Rating
Subscribe
Notify of
guest

6 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
고스

그 책 저도 잠깐보고 공부해봤는데 맘에 들어서 살 생각입니다. 아직 미숙하니 두고두고 많이 볼꺼 같아서요 ^^;

싸이오블레이드

괜찮은 책이었던 것 같습니다. 나름대로 정리해보려고 했으나 외공이 부족하여 정리가 아니라 책이될 것 같은 생각이들어..조금 하다가그냥 가까이에두고 보고있습니다.

곰곰이

고스 님 : 책 볼만 하더군요. 저는 도서관에서 두번째 빌려보는 겁니다. ㅡㅡ;

싸이오블레이드 님 : 강컴 서평 잘 봤습니다. ㅋㅋ

김재민

정리가 잘되어 있어서 동아리 홈피로 좀 퍼갈께요^^ 퍼가는거 허락 안되면 darkkjm2002@gmail.com으로 메일 주세요 바로 지우겠습니다.(출처는 써넣겠습니다.

NoSyu

반갑습니다. 구글 검색을 통해 찾아왔습니다.
헤더 파일을 탐색할 디렉토리 지정 ex_ -l/opt/include
에서 -l이 아니라 -I입니다.
즉, L이 아니라 i입니다.
해보니 안 되어서 찾아보니 그렇다는 것을 알았기에 댓글을 남기게 되었습니다.
다른 분이 보시고 혼란을 겪지 않도록 수정 부탁드립니다.

고감자

발견하기 쉽지 않으셨을 오타인데….
감사합니다.