본문 바로가기
운영체제/Linux

Linux ] gcc -O 최적화 옵션 플래그

by eteo 2022. 10. 9.

 

 

 

컴파일러의 최적화 수준을 설정

옵션 최적화수준
-O0 최적화를 수행하지 않는다. (기본값)
-O1 또는 -O 코드 크기와 실행 시간을 줄이는 것을 제외한 최적화는 실행하지 않는다
-O2 메모리 공간과 속도를 희생하지 않는 범위내의 모든 최적화를 수행한다
loop unrolling과 function inlining에 대한 최적화를 수행하지 않는다
-O3 O2 최적화에 인라인 함수와 레지스터에 대한 최적화를 추가로 수행한다.
-Os O2 최적화를 수행하지만 코드 크기를 증가시키는 최적화는 생략한다.
-Ofast 사용이 권장되지 않는 최적화 옵션

 

※ 커널 컴파일 시 최적화 옵션 -O2만 사용하는 이유

커널은 최적화된 수행 속도를 위해 의도적으로 인라인 함수를 사용하고 있다. -O3 최적화는 컴파일러가 판단해서 인라인을 인라인이 빠른 것은 인라인으로, 함수가 빠른 것은 함수로 바꿔버리기 때문에 컴파일러에 의해서 자의적으로 함수로 바뀌는 것을 막기 위해 -O2 옵션을 사용한다.