일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 플러터
- Houdini
- Data Structure
- docker
- HTML
- github
- C언어 포인터
- jupyter lab
- 깃
- C++
- git
- jupyter
- 구조체
- 다트 언어
- Algorithm
- Unity
- 포인터
- C# delegate
- 유니티
- 도커
- vim
- Python
- c#
- gitlab
- c언어
- Flutter
- c# 추상 클래스
- c# 윈폼
- c# winform
- dart 언어
- Today
- Total
nomad-programmer
[Programming/Tools] gcc 옵션 설명 본문
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 옵션은 코드의 품질을 엄격하게 유지하게 하므로, 여러 사람이 한 코드에 함께 작업할 때 유용하다.
'Programming > Tools' 카테고리의 다른 글
[Programming/Tools] valgrind (Memcheck, a memory error detector) (0) | 2020.06.17 |
---|