2016-07-07 3 views
1

컴파일하는 동안 사용되는 기본 컴파일러 플래그를 찾고 있습니다. 그러므로 내가 명령을 사용 gcc -Q -v <example.c> 관심의 결과는 다음과 같다 :"옵션 사용"과 "옵션 전달"의 차이점 gcc -Q -v

GNU C (우분투 4.8.4-2ubuntu1 ~ 14.04.3) 버전 4.8.4 (x86_64에-리눅스 GNU) GNU에 의해 컴파일 C 버전 4.8.4, GMP 버전 5.1.3, MPFR 버전 3.1.2-p3, MPC 버전 1.0.1

GGC 지능형 : - 매개 변수 ggc-min-expand = 100 - 매개 변수 ggc- heapsize = 131072

옵션이 전달되었습니다. -v -imultiarch x86_64-linux-gnu example.c -mtune = generic -march = x86-64 -fstack-protector -Wform -Wformat 보안에

옵션이 활성화 : -faggressive - 루프 최적화를 -fasynchronous - 언 와인드 테이블 -fauto-INC 12 월 -fbranch-카운트 등록 -fcommon -fdelete - 널 포인터 검사 -fdwarf2- cfi-asm -fearly-inlining -feliminate-unused-debug-types -function-cse -fgcse-lm -fgnu-runtime -fgnu-unique -find -finline-atomics -fira-hoist-pressure -fira-share-save- 슬롯 -fira-share-spill-slots -fivopts -fkeep-static-consts -fleading- 밑줄 -fmath-errno -fmerge-debug-strings -fmove-loop-invariants -fpeeephole -fprefetch-loop-arrays -freg-struct- fsched-critical-path-heuristic -fsched-count-heuristic -fsched-group-heuristic -fsched-interblock -fsched-last-insn-heuristic -fsched-rank-heuristic -fsched-spec -fsched-spec- insn-heuristic -fsched-stalled-insns-dep -fshow-column -fsigned-0 -fsplit-ivs-in-unroller -fstack-protector -fstrict -v 논리식 비트 필드 -fsync-libcalls -ftrapping-math -ftree-coalesce -vars -ftree-cselim -ftree-forwprop -ftree-loop-if-convert -ftree-loop-im -ftree-loop-ivcanon -ftree-loop- 최적화 -ftree-parallelize-loops = -ftree-phiprop -ftree-pta -ftree-reassoc -ftree-scev-cprop -ftree-slp-vectorize -ftree-vect-loop-version -funit-at-a-time -funwind -tables -fvar-tracking -fvar 추적 할당 -fzero-initialized-in-bss -m128bit-long-double -m64 -m80387 -maccumulate-outgoing-args -malign-stringops -mfancy-math-387 -mfp-ret -in-387 -mfxsr -mglibc -mieee-FP -mlong 더블 80 -mmmx -mno-SSE4 -mpush 인자들 -mred 존 -msse -msse2 -mtls 직시 SEG-심판

나는 지금 궁금합니다 : 옵션의 차이점은 무엇입니까옵션이 통과되었습니다.?

답변

1

옵션 -v처럼 -march=x86-64 -fstack-protector 같은 구성에 의해 추가, 또는 명령 호출에 의해, 명령 줄에 추가 수있는 옵션을 통과시켰다. 즉, 이러한 옵션은 기본적으로 활성화되어 있지 않으므로 gcc 명령으로 지정해야합니다.

옵션 당신이 그들 중 일부를 해제하지 않습니다까지 옵션에 같은을 통과 활성화되어 항상, 특정 시스템에 특정 gcc 컴파일하는 데 사용되는 옵션입니다 enebled.

예. 명확한 환경에서 gcc example.c을 호출하면 example.c은 전달 된 옵션으로 표시되지만 모든 옵션은 여전히 ​​동일하게 설정됩니다.

+0

이 컴파일 옵션이 전달되고 example.c를 컴파일하는 데 사용되는 옵션이 사용된다는 것을 의미합니까? 왜 그들은이 둘을 구별합니까? – Maximilian

+1

전달 된 옵션은 기본적으로 활성화되어 있지 않으므로이를 사용하려면 명령에 전달해야합니다. – LPs

+0

하지만 결국 모든 컴파일러 옵션 (전달 된 옵션과 사용 가능한 옵션)이 컴파일되도록 설정 되었습니까?이것을 설명하는 출처가 있습니까? – Maximilian