GCC 몇 가지 옵션 학습

http://www.lingcc.com/2011/06/27/11679/
최근 에 GCC 의 옵션 을 연 구 했 는데 비교적 재 미 있 습 니 다. 골 라 서 공부 하 세 요.컴 파 일 러 는 프로그래머 의 중요 한 도구 로 서 GCC 는 컴 파 일 러 에서 가장 광범 위 하 게 응용 되 고 곳곳에 친근 한 디자인 과 기능 지원 을 나타 낸다.
 
Table of Contents
  • 1 -dumpmachine
  • 2 -xc
  • 3 -dM
  • 4 -print-file-name=include
  • 5 -isystem DIR
  • 6 -nostdinc/-nostdinc++
  • 7 -Wp/-Wa/-Wl
  • 8 -EL/-EB
  • 9 -DMACRO/-UMACRO
  • 10 -G num
  • 11 -msym32/-mnosym32
  • 12 -fdelete-null-pointer-checks/-fno-delete-null-pointer-checks
  • 13 -mcheck-zero-division/-mno-check-zero-division
  • 14 -mabicalls/-mno-abicalls
  • 15 -mbranch-likely/-mno-branch-likely
  • 16 -fstack-protector
  • 17 -fstrict-overflow
  • 18 -fconserve-stack
  • 19 참조
  • 1 -dumpmachine
    현재 GCC 를 사용 하고 있 는 정 보 를 보 여 줍 니 다. erlv 의 Debian AMD 64 에서 결 과 는 다음 과 같 습 니 다.GCC 의 이 필드 들 이 무슨 뜻 인지 에 대해 서 는 이 박문 을 참고 하 시기 바 랍 니 다.
    $ gcc -dumpmachine
    x86_64-linux-gnu

    2 -xc
    사실은 - xc 와 '- x c' 는 같다.
  • x 는 입력 한 프로그램의 언어 를 지정 하 는 데 사 용 됩 니 다. 이 옵션 을 사용 하면 GCC 는 파일 의 접미사 이름 에 따라 언어 유형 을 판단 하지 않 습 니 다. 

  • 3 -dM
    실제 사전 처 리 를 하지 않 고 모든 \ # define 의 매크로 만 표시 합 니 다. 이 매크로 들 은 대부분 시스템 구조 와 GNU 와 관련 되 거나 포 함 된 헤더 파일 에서 나 옵 니 다.
    #$gcc  -E -dM hello.c

    그리고 - dchars 의 조합 옵션 도 있 습 니 다.
  • - dd: - dm 와 유사 하지만 헤더 파일 에 정 의 된 매크로 만 포함 하고 예비 프로세서 에서 기본 으로 정 의 된 매크로 를 출력 하지 않 으 며 원본 프로그램 코드 도 미리 처리 합 니 다.
  • - DN: - dd 와 유사 하지만 정 의 된 매크로 의 이름 만 출력 하고 매크로 의 값 은 출력 하지 않 습 니 다.
  • - di: \ # include 의 헤더 파일 을 드 리 고 예비 처리 결과 예상
  • - du: - dd 와 유사 하지만 원본 코드 에서 펼 쳐 져 야 하거나 그 정의 가 테스트 될 매크로 만 출력 합 니 다. 

  • 4 -print-file-name=include
    GCC 기본 검색 include 헤더 파일 을 인쇄 하 는 경로
    $ gcc -print-file-name=include
    /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.6.1/include

    5 -isystem DIR
    DIR 경 로 를 헤더 파일 검색 경로 중 하나 로 합 니 다.검색 순서: - I 가 지정 한 폴 더 = - isystem 이 지정 한 폴 더 = 표준 시스템 헤더 폴 더.
    6 -nostdinc/-nostdinc++
    표준 시스템 헤더 파일 디 렉 터 리 를 검색 하지 말고 - I 가 지정 한 경로 만 검색 하 십시오.
    7 -Wp/-Wa/-Wl
    이 세 가 지 는 각각 예비 처리 기, 어셈블러, 링크 기 에 전 달 된 인 자 를 지정 하 는 데 사용 된다.
  • - wp, option 등가 - Xpreprocessor option
  • - wa, option 등가 - Xassembler option
  • - wl, option 등가 - Xlinker option
  • 8 -EL/-EB
    작은 끝 / 큰 끝 시스템 에 코드 를 컴 파일 합 니 다.기본 값 은 작은 끝
    9 -DMACRO/-UMACRO
    매크로 MACRO 정의 / 매크로 MACRO 정의 취소
    10 -G num
    전역 과 정적 대상 의 크기 를 num 바이트 보다 작은 데이터 로 나 누 어 bss 엔 드 의 작은 데이터 에 넣 습 니 다.기본 num 값 은 8 입 니 다.
    MIPS 는 기호 로부터 주 소 를 받 을 때 높 은 16 자 리 를 먼저 꺼 내 고 낮은 16 자 리 를 꺼 내 맞 춤 법 으로 최종 주 소 를 얻어 야 하기 때문에 두 번 의 액세스 작업 이 필요 하 다.프로그램 에서 정적 과 전역 데 이 터 를 대량으로 사용 할 때 이런 방식 은 프로그램 을 느리게 할 수 있다.그래서 GP 레지스터 를 이용 하여 최적화 하 는 방법 이 생 겼 다. 즉, GP 레지스터 와 상대 적 으로 오프셋 하 는 방식 으로 방문 하여 방문 횟수 를 낮 추 는 것 이다.문 제 는 컴 파일 러 와 어셈블러 가 컴 파일 할 때 어떤 변 수 를 GP 레지스터 로 접근 할 수 있 는 지 확인 해 야 한 다 는 것 이다.일반적인 방법 은 크기 가 일정 치보다 작은 변 수 를 GP 레지스터 를 통 해 접근 하 게 하 는 것 이다.
    num 이 0 이면 이 최 적 화 를 닫 는 것 을 표시 합 니 다.
    11 -msym32/-mnosym32
    어떤 ABI 를 취하 든 모든 기호 가 32 비트 의 값 이 라 고 가정 하지 않 습 니 다.이 옵션 은 - mabi = 64 와 - mno - abicall 에 맞 출 때 매우 유용 합 니 다. 가설 을 통 해 32 비트 데이터 로 더 작고 빠 른 기호 주 소 를 만 들 수 있 기 때 문 입 니 다.
    12 -fdelete-null-pointer-checks/-fno-delete-null-pointer-checks
    delete - null - pointer - checks 는 최적화 수단 으로 전체적인 데이터 흐름 분석 을 통 해 모든 빈 포인터 에 대한 검 측 작업 을 식별 하고 삭제 합 니 다.컴 파일 러 는 빈 포인터 에 대한 해석 인용 이 프로그램 이 종 료 될 것 이 라 고 가정 합 니 다.그러나 일부 환경 에서 이 결론 이 반드시 성립 되 는 것 은 아니 기 때문에 O2, O3 와 Os 는 이 최 적 화 를 시작 할 것 이다.그래서 GCC 에 옵션 이 추가 되 었 습 니 다. - fno - delete - null - point - checks.
    13 -mcheck-zero-division/-mno-check-zero-division
    정수 0 을 나 눌 때 빠 지 거나 빠 지지 않 습 니 다.
    14 -mabicalls/-mno-abicalls
    SVR 4 형식의 동적 대상 코드 를 생 성 / 생 성하 지 않 고 기본적으로 생 성 합 니 다.
    15 -mbranch-likely/-mno-branch-likely
    지정 한 시스템 구조 가 기본적으로 지원 되 든 안 되 든 branch likely 명령 을 사용 하거나 사용 합 니 다.GCC 는 기본적으로 branch likely 명령 을 지원 하 는 시스템 구조 에 branch likely 명령 을 생 성 합 니 다.
    이러한 명령 을 도입 하 는 것 은 점프 가 발생 할 수 있 는 명령 을 도입 하기 위해 서 이다. 그러면 컴 파일 러 는 MIPS 중의 delay slot 를 충분히 이용 할 수 있다.
    16 -fstack-protector
    가능 한 버퍼 넘 침 을 위해 추가 검사 코드 를 생 성 합 니 다.
    17 -fstrict-overflow
    컴 파일 러 가 엄격 한 기호 넘 침 규칙 을 사용 하도록 허용 합 니 다.
    18 -fconserve-stack
    창고 에 대한 사용 을 되도록 줄이다.
    19 참조
  • http://gcc.gnu.org/ml/gcc-help/2006-10/msg00191.html
  • See MIPS Run Linux, 2ed, by Dominic Sweetman, Page 273
  • GCC man pages 

  • 다음으로 전송:https://www.cnblogs.com/cnland/archive/2013/02/08/2909248.html

    좋은 웹페이지 즐겨찾기