Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
05-16 01:30
관리 메뉴

nomad-programmer

[Programming/Tools] gcc 옵션 설명 본문

Programming/Tools

[Programming/Tools] gcc 옵션 설명

scii 2020. 6. 21. 02:40

gcc는 매우 많은 기능을 갖고 있어서 만들어내는 코드를 매우 다양하게 제어할 수 있다.

최적화

gcc는 코드 성능을 아주 많이 높일 수 있다. 루프를 반복할때마다 변수에 값은 값을 대입하는 코드가 있으면 이런 코드를 루프 밖으로 빼낸다. 
단지 몇 군데에서만 사용하는 작은 함수가 있다면 이 함수를 인라인 함수(Inline Function)로 바꾸고 호출하는 코드에 직접 집어 넣는다.

매우 다양한 최적화를 할 수 있지만, 대부분의 최적화 기능은 기본값으로는 해제되어 있다. 최적화하려면 컴파일하는 데 많은 시간이 걸리므로 코드를 개발하는 동안에는 컴파일 시간을 줄이기 위해 최적화 기능을 끄는 편이 좋다.

코드를 배포할 준비가 되면 여러 최적화 기능을 활성화하면 된다.

옵션

설명

-O

gcc 명령에 -O 플래그를 추가하면, 1단계 수준으로 최적화한다.

-O2

-O보다 더 많이 최적화하고, 약간 더 느리게 컴파일된다.

-O3

-O2보다 더 많이 최적화한다. -O와 -O2에서 수행하는 최적화에 약간의 최적화를 추가한다.

-Ofast

최고 수준으로 최적화하려면 -Ofast 옵션을 사용한다. 컴파일하는 속도가 가장 느리다. 이 옵션으로 컴파일하면 컴파일된 코드의 C표준 호환성이 떨어질 수 있으므로 주의해야 한다.

 

경고

값을 잘못된 형의 변수에 대입하는 경우처럼, 코드가 기술적으로는 정당하지만 의심스러운 작업을 수행한다면 경고를 출력한다.
-Wall 옵션을 사용하면 가능한 한 모든 경고를 출력한다.

gcc test.c -Wall -o test.out

-Wall 옵션은 '모든 경고'를 의미한다. 그렇지만 실제 모든 경고를 출력하지는 않는다. 
모든 경고를 다 출력하려면 -Wextra 옵션을 사용해야 한다.

gcc test.c -Wextra -o test.out

그리고 정말 엄격하게 컴파일하려면 -Werror 옵션을 사용하면 된다. 어떤 경고라도 발생하면 에러가 발생한 경우처럼 컴파일되지 않는다.

// '경고를 에러처럼 생각하라'는 옵션
gcc test.c -Werror -o test.out

-Werror 옵션은 코드의 품질을 엄격하게 유지하게 하므로, 여러 사람이 한 코드에 함께 작업할 때 유용하다.

Comments