반응형
gcc란
gcc는 .c 파일을 CPU가 실행할 수 있는 파일로 번역하는 프로그램이다.
gcc -Wall -g hello.c -o hello # 컴파일
./hello # 실행
gcc 는 전처리 → 컴파일 → 어셈블 → 링크를 한 번에 해준다. 에러 종류를 알면 원인을 더 빨리 찾을 수 있다.
에러 종류
error: 'x' undeclared
단계 : 컴파일, 문법, 선언 문제
undefined referece to 'foo'
단계 : 링크, 함수 선언만 하고 정의를 안 썼거나, 파일/라이브러리를 빠뜨렸다.
gcc 옵션
-o test
결과물 이름을 test 로 설정한다. -o 없이 컴파일하면 결과물 이름이 a.out 이 된다.
-g
디버깅 정보 넣기 (gdb 쓸거면 필수)
-Wall -Wextra
경고 최대한 켜기
-O2
Optimization level 2, 최적화이다. 컴파일러가 코드를 더 빠르게 재배치한다. 경고를 만들어내는 분석 중 일부가 최적화 과정에 속해 있어서, -02 를 켜야 보이는 경고가 있다.
-fsanitize=address
배열 범위 초과, use after free, 메모리 누수를 실행 중에 잡아서 어느 줄인지 알려준다.
F5 (디버깅 실행) 과의 차이
| 터미널 gcc | F5 디버깅 | |
| 컴파일 | 내가 옵션을 직접 지정 | tasks.json 설정대로 자동 |
| 실행 파일 | 내가 정한 이름 (-o hello) | 보통 소스 파일 이름 그대로 |
| 실행 후 | 그냥 끝 | 디버거(gdb) 가 붙음 |
| 중단점 (break point) | 못 씀 | 쓸 수 있음 |
| 입력 | 터미널에 바로 입력 | 설정에 따라 디버그 콘솔이라 입력이 안될 때가 있음 |
F5 디버깅은 한 줄씩 멈춰가며 변수를 들여다볼 수 있어서 동작을 상세하게 알고싶을 때 주로 사용한다.
반응형