= "GNU C Compiler" -> "GNU Compiler Collection"
.c : C소스 파일 -> 전처리(Preprocessing), 컴파일(Compile), 어셈블리(Assembly), 링킹(Linking)
.s : 어셈블리 파일 -> 어셈블리, 링킹
.S : 어셈블리 파일 -> 전처리, 어셈블리, 링킹
.o : 오브젝트 파일 -> 링킹
.a .so : 컴파일된 라이브러리 파일 -> 링킹
-c : 소스파일을 오브젝트 파일로 컴파일
-o filename : 출력 바이너리 파일 이름을 설정(기본값 : a.out)
-I dir : 헤더 파일 검색을 위한 디렉토리 추가
-S : 소스파일을 어셈블리 파일로 컴파일
-E : 소스 파일을 전처리
-L dir : 라이브러리 검색을 위한 디렉토리 추가
-g : 바이너리 파일에 표준 디버깅 정보 추가
-ggdb : 바이너리 파일에 gdb 디버깅 정보 추가
-O : 컴파일 최적화
-O level : 최적화 수준 설정(1~3)
-D Foo=BAR : BAR값으로 전처리된 매크로 FOO를 디파일 한다.
-llib : 링킹하는 동안 라이브러리 링킹
-Wall : 잘못된 코드와 관련된 대부분의 경고 표시
: 자동변수는 특정 부분을 참조하는데 사용된다.
eval.p : eval.c eval.h
g++ -c eval.c
* - 확장자가 없는 파일 이름(eval)
^ - 모든 종속성의 이름(eval.c eval.h)
$? - 대상보다 최신인 모든 종속성의 이름
: 한 유형의 파일을 다른 유형에서 만드는 표준 방법
a.c 파일, a.p파일 등 .o 파일을 만드는데 많은 규칙이 있다.
Phony targets : 종속성이 없는 타겟, 실행하려는 명령의 이름으로만 사용된다.
조건문(지시문)
if, ifeq, ifneq, ifdef, ifndef
이것들은 endif 로 끝내야한다. elif 및 else 사용가능