왼쪽에서 오른쪽으로 생성이 된다.
참고 : https://velog.io/@mtak0235/Makefile , 열혈 c
1. | 2. | 3. | 4. | 5. | |
---|---|---|---|---|---|
생성하는 파일이름 | 소스파일 | 목적파일 | 실행파일 | ||
파일 확장자 | .c | .i | .S | .O | .exe |
이 파일을 만들기 위해 gcc에 달리는 옵션 | -E | -c | -o | ||
다음단계로 가기 위한 단계 | '전처리기'가 #으로 시작되는 부분들을 치환한다.(헤더파일 삽입, 실행문장 매크로 상수 변환) | '컴파일'을 통해서 .i 파일을 어셈블리어로 된 .s 파일로 만든다. 실제로 만들어지는게 보이지는 않는다. | '어셈블러'가 기계가 이해 가능한 언어 (= 기계어) 로 변경한다. | '링킹'이 이루어진다. 이과정에서 파일간의 연결이 이루어지고, 라이브러리 함수도 연결된다. | |
한줄 요약 : 전처리까지 진행된다. 사용 옵션 : -E
$ gcc -E file.c
$ gcc -E file.c -o file.i
한줄요약 : 어셈블리어로 된 파일을 생성한다.
한줄요약 : 기계가 이해 가능한 언어로 변경한다.
사용옵션 : -c
⇒ 이 옵션을 사용하면, 전처리(.c → .i) 후에 컴파일(.i → .s) 후에 어셈블(.s→ .o) 까지 진행한다.
$ gcc -c file.c
⇒ c 파일에 대해서 .o 파일이 각각 생성된다, (c와 똑같은 이름으로)
$ gcc file.o