gcc
(GNU Compiler Collection)
GNU 프로젝트의 오픈 소스 컴파일러
Unix 용 C 컴파일러였다. 하지만 현재는 다양한 언어를 지원하면서 거의 표준이다.
gcc는 많이 쓰이기 때문에 gcc 사용법을 잘 익혀놓아야 한다.

GNU 컴파일러 모음
위키백과, 우리 모두의 백과사전. GNU 컴파일러 모음(GNU Compiler Collection, 줄여서 GCC)는 GNU 프로젝트의 일환으로 개발되어 널리 쓰이고 있는 컴파일러이다. 자유 소프트웨어 중에 가장 잘 알려진 것
ko.wikipedia.org
gcc 사용법
$ gcc main.c #a.out라는 바이너리 파일로 생성된다.
$ /a.out #실행
gcc를 리눅스에서 기본으로 실행하면 a.out 으로 생성된다. (리눅스 실행파일)
$ gcc -o main main.c #main 이라는 이름으로 바이너리 파일로 생성 (가장 많이 쓰는 형태)
$ /main #실행
-o 옵션은 이름을 바꿀 수 있다.
-c 옵션은 main () 함수를 찾지 않겠다는 의미이다. 따라서
$ gcc -c main.o main.c #object 파일생성
가 가능하다. 이것은 매우 중요한 옵션이다.
$ gcc -o main main.c array.c #object 파일 생성 X
바로 생성도 가능하다.
array.c 처럼 뒤에 붙이면 헤더를 자동으로 찾아준다. 종속성을 주고 싶으면 Makefile를 작성해야 한다.
라이브러리 참조를 해보자.
$gcc -o main main.c -lphthread
이러면 시스템 내부의 라이브러리 libpthread.so를 참조한 main 이라는 프로그램이 생성된다.
gcc의 그 외 명령 옵션들 (더 알고 싶다면 $gcc ---help 또는 man gcc)
-v : 컴파일 과정을 화면에 출력
-o : 출력 파일 이름 설정
-I : 대문자 i. header 파일의 위치를 설정
-D : 코드 내부 define이다.(= 맨 위에 #define을 추가)
-Wall : Warning all의 줄임말이다. 컴파일은 진행되지만, gcc가 알려주는 warning들을 보여준다.
-W : Wall 옵션으로 인해 표시되지 않던 warning도 함께 보여준다.
-O : 최적화 옵션 자세한 사용법은 여기에 잘 설명되어 있다.
-lm : math libarary 사용하는 옵션이다.
-l : 라이브러리 참조 명령. 컴파일할 때 많이 쓴다.
-L : library 폴더의 위치를 지정한다.
-c : *.o 파일을 생성하는 옵션이다.
GCC #pedantic -Wall -Wextra -Werror 컴파일 옵션을 넣으면 사소한 warning: 사항도 전부 error: 로 변환하여 컴파일을 중단시키므로 코드의 품질을 잡는 데 많은 도움이 된다.