본문으로 이동
메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.
GNU 프로젝트의 C와 C++ 컴파일러(GNU Compiler Collection).
  • 유닉스와 리눅스 모두에서 명령어와 옵션이 같음
  • 경로 : /usr/bin/gcc

gcc 는 소스 파일을 전처리 → 컴파일 → 어셈블 → 링크 네 단계로 처리해 실행 파일을 만든다. 옵션 없이 소스 파일만 주면 네 단계를 모두 거치고, 출력 파일 이름을 정하지 않았으므로 a.out 이라는 실행 파일을 만든다. 중간에 생긴 오브젝트 파일(.o)은 링크가 끝나면 지운다.

단계 멈추는 옵션 결과
전처리(#include, #define 처리) -E 표준 출력(.i)
컴파일 -S 어셈블리 파일(.s)
어셈블 -c 오브젝트 파일(.o)
링크 (옵션 없음) 실행 파일(이름을 주지 않으면 a.out)
gcc [옵션] 파일···
  • -o 파일 : 만들 파일의 이름을 정한다. 주지 않으면 실행 파일은 a.out, -c 의 오브젝트 파일은 소스이름.o 다.
  • -c : 링크하지 않고 오브젝트 파일(.o)까지만 만든다.
  • -S : 어셈블리 파일(.s)까지만 만든다.
  • -E : 전처리만 하고 결과를 출력한다.
  • -g : 디버거(gdb)가 쓸 디버깅 정보를 넣는다.
  • -O, -O2, -O3 : 최적화 수준을 정한다.
  • -Wall : 흔한 경고를 모두 켠다.
  • -I 디렉터리 : 헤더 파일을 찾을 디렉터리를 더한다.
  • -L 디렉터리 : 라이브러리를 찾을 디렉터리를 더한다.
  • -l이름 : 라이브러리 lib이름.so(또는 .a)를 링크한다. 예: -lm 은 수학 라이브러리
  • -D 이름[=값] : 매크로를 정의한다.
  • --help : 사용법을 출력한다.
  • --version : 버전 정보를 출력한다.
# 실행 파일 a.out 이 생긴다
$ gcc lin.c
$ ./a.out

# 실행 파일 이름을 lin 으로
$ gcc -o lin lin.c

# 오브젝트 파일 lin.o 만 만든다
$ gcc -c lin.c

# 오브젝트 파일 여럿을 링크하고 수학 라이브러리를 붙인다
$ gcc -o lin lin.o util.o -lm

# 경고와 디버깅 정보를 켜고 최적화
$ gcc -Wall -g -O2 -o lin lin.c
  • gcc lin.c 는 lin 이나 lin.o 를 남기지 않는다. lin.o 를 얻으려면 -c, lin 이라는 실행 파일을 얻으려면 -o lin 을 준다
  • 여러 파일을 나눠 컴파일하고 링크하는 순서는 보통 Makefile 에 적어 make 로 돌린다