**gcc 옵션
-v : 컴파일 상태 출력
-O2 : 최적화 레벨 2 적용
-E : 전처리 과정 결과 출력. --save-temps 옵션 사용 추천
-S : cc1으로 전처리된 파일을 어셈블리 파일(.s) 까지만 컴파일
-c : as에 의한 어셈블까지만 수행하고 링크하지 않음
--save-temps : 전처리 파일(*.i) 과 어셈블리 파일(*.s) 를 지우지 않고 현재 디렉토리에 저장 (컴파일 오류 분석용)
** cpp0 옵션 (전처리기)
-I : 헤더 파일 경로 (ex. -I/usr/local/include)
-D[매크로]=[값] : #define 매크로 (ex. -DDEBUG, -DPACKAGE=1)
-U[매크로] : #undef 매크로
-M : make를 위한 소스 파일의 모든 종속 항목 출력
-MM : 기본 include 디렉토리의 헤더 파일을 제외한 종속 항목 출력
-nostdinc : 기본 include 디렉토리(/usr/include) 에서 헤더 파일을 탐ㅅ핵하지 않고 -I 옵션의 디렉토리에서만 헤더 파일 검색
-C : -E 와 함께 사용. 전처리 과정에서 주석을 제거하지 않음.
-Wp,[옵션] : gcc를 거치지 않고 cpp0 으로 바로 옵션을 전달
(ex. -Wp,-DDEBUG,-I/usr/include,-M)
** cc1 옵션 (C 컴파일러)
-W : 합법적이지만 모호한 코딩에 경고 출력
-Wall : 모호한 코딩에 경고 출력
-ansi : ANSI C 표준으로 문법 체크. (GNU C 확장 문법 사용 불가)
-std=[C 표준] : 표준 지정시 사용 (ex. -std=c++11)
-w : 경고 메시지 제거하지
-Werror : 경고 발생시 컴파일 중단
-pedantic : ANSI C89 표준의 모든 경고 메시지 표시
-pedantic-errors : ANSI C89 표준의 모든 오류 메시지 표시
-O[숫자] : 최적화 옵션
-O0 : 최적화 미수행(default). 인라인 함수 확장되지 않음.
-O1 : 파일을 가능한 작게 하면서, 컴파일 시간이 오래걸리지 않는 범위에서 최적화
-O2 : 속도 최적화. (코드 크기 고려)
-O3 : 속도 최적화. (코드 크기 고려하지 않음 : 모든 함수를 인라인 함수로 취급)
-Os : 사이즈 최적화. (ex. 임베디드 시스템)
-g : 디버깅 정보 추가. (용량이 매우 커짐)
-g0 : 디버깅 정보 미삽입
-g2 : -g 와 동일
-g3 : 가장 많은 디버깅 정보
-pg : 프로파일 코드 삽입. 프로그램 실행 후 gmon.out에 프로파일 결과 저장하여 gprof 로 분석 가능.
** as 옵션 : (어셈블러)
-Wa,[as 옵션] : gcc를 거치지 않고 바로 전달. (ex. -Wa-al,-as)
-al : 어셈블된 인스트럭션 출력
-as : 정의된 심볼 출력
-I[경로] : include 디렉토리 지정. 어셈블리 소스에서 사용된 .include 지정자가 지정한 헤더 파일 검색시 사용
-W : 경고 메시지 미 출력(--no-warm)
-match=[아키텍처 문자열] : 해당 어셈블리
** collect2(또는 ld) 옵션 (링커)
-L[라이브러리 경로] : 사용할 라이브러리 경로 지정
-l [라이브러리 이름] : 사용할 라이브러리 이름 지정
-shared : 공유라이브러리 를 우선하여 링크(default)
-static : 정적 라이브러릴르 우선하여 링크
-nostdlib : 링크 시 표준 C 라이브러리 미사용
-nostartfiles : 링크 시 crt1.o 등 start up 파일 미사용
-Wl,[링크 옵션] : gcc를 거치지 않고 링크에게 옵션 전달. 사용법은 -Wa와 동일
-s : 실행 파일에 심볼 테이블 제거
-x : 출력 파일에 로컬 심볼 제거
-n : 읽기 전용 텍스트 영역 사용
-r : 추후 링크 가능하도록 오브젝트 생성
-e [name] : 시작 심볼을 name 심볼로 사용(기본은 _start 심볼)
-M : 자세한 심볼 정보 출력
-oformat [format] : format 형식의 오브젝트 파일 생성
'가지가지' 카테고리의 다른 글
linux 에서 utf-8 BOM 파일 생성 하기 (0) | 2017.11.17 |
---|---|
angular cli 명령어 (0) | 2017.11.17 |
angular4 dynamic add remove component (0) | 2017.10.26 |
angular4 custom RouteReuseStrategy (0) | 2017.10.26 |
c++ 개발환경(vim 명령어) (0) | 2017.07.03 |
c++ 개발환경 디버깅 (gdb 명령어, strace, ltrace, splint, valgrind, ...) (0) | 2017.07.03 |
zookeeper 3.4.10 기본 설치 (0) | 2017.07.03 |
c++ 개발 환경(vim vundle, YouCompleteMe) (0) | 2017.06.26 |