gcc는 처음엔 단순한 C compiler 였으나, C++, 자바, 포트란 등을 모두 컴파일 할 수 있을 정도로 범위가 커져 컴파일러 콜렉션으로 바뀌었다.
컴파일 패스: 전처리기 → 컴파일러 → 어셈블러 → 링커
gcc 는 위 과정을 모두 수행해 소스파일을 실행파일로 생성해준다.
gcc hello.c
object 파일을 생략하고 바로 a.out 파일을 만들어준다.
$./a.out
으로 바로 실행시킬 수 있다.
--help : 간단한 옵션을 출력해줍니다.
--version : gcc의 버젼을 출력해 줍니다.
-o : 출력 파일명을 지정할 때 사용합니다.
-c : 링킹 과정을 진행 하지 않고 .o 파일인 오브젝트 파일까지만 생성 하게 됩니다.
-S : 어셈블러까지 진행 하지 않고, 컴파일러까지의 출력은 .S 어셈블러 파일을 생성하게 됩니다.
-O1 ~ -O3 : 최적화 수준을 지정합니다. 숫자가 클수록 높은 수준의 최적화를 하게 됩니다.
-g : 디버깅을 위한 정보를 컴파일 하면서 생성하게 됩니다.
-D : define 을 할수 있는 옵션입니다.
-l (엘) : 라이브러리 이름을 지정합니다.
-L : 추가 라이브러리 디렉토리를 지정합니다.
-W : 모든 에러 메시지 출력
-w : 모든 에러 메시지를 출력 하지 않음
-I(아이) : 추가 헤더 파일이 있는 디렉토리를 지정합니다.