Skip to content
Snippets Groups Projects
Commit 7f21245e authored by BeomSooHeo's avatar BeomSooHeo
Browse files

Update 2020_08_07.md

parent fabb87d8
No related branches found
No related tags found
No related merge requests found
......@@ -2,20 +2,22 @@
## Makefile 작성
![image](/uploads/bd4fad65fe0680ce5e2bb99e5b9fe1fb/image.png)
![image](/uploads/2b616358fe0f4a5ab67dc54515d76676/image.png)
<br><br>
### 1.매크로 정의
> 1. SRCS : 컴파일에 필요한 소스파일들을 의미
> 2. OBJS : SRCS에 정의된 .c 파일들의 각 이름만을 .o 파일에 치환된 것을 의미
> 3. CC : gcc로 치환
> 4. CFLAGS : gcc 컴파일시 사용할 옵션들을 정의
> 4. CFLAGS : gcc 컴파일시 최종 파일을 만들 때 사용할 옵션들을 정의.
> 5. CXX : gcc 컴파일시 Object 파일들을 만들 때 사용될 옵션들을 정의.
> 6. MACRO : -D 옵션이 전달되었을 때를 정의된 내용이 이곳에 쓰인다.
### 2.최종 실행파일 test를 빌드하기 위해서 OBJS(오브젝트 파일들)이 먼저 생성되야한다.
> 1. CC : 앞에서 정의한 매크로 -> gcc
> 2. 내장매크로 @ : 현재 target 파일명 -> test
> 3. 내장매크로 ^ : 현재 모든 의존파일들 -> main.o func.o
> 4. -o : $@을 통해 target 파일명을 최종 실행파일의 이름으로 설정
### 3. .c.o : 확장자 규칙으로, 파일의 확장자를 보고 그에 따라 적절한 연산을 수행한다.<br>
여기서 .c는 C소스코드, .o는 Object 파일을 의미한다.<br>
......@@ -52,9 +54,16 @@ Object 파일을 따로 생성해두지 않고 바로 빌드를 하는 경우도
<br><br>
![image](/uploads/e93d104120c36231d68ce98c93436820/image.png)
<br><br>
4. 빌드 결과 생성된 실행파일도 제대로 수행된다. (PRINT_ID가 정의되지 않았기에, 1을 출력한다.)
4. Result1: PRINT_ID가 정의되지 않음:: 빌드 결과 생성된 실행파일도 제대로 수행된다. (PRINT_ID가 정의되지 않았기에, 1을 출력한다.)
<br><br>
![image](/uploads/8fa217f917dcc4fa7c7d00172ee0c8a0/image.png)<br><br>
5. make clean 결과로 생성되었던 Object 파일과 실행 파일을 제거한 후 결과확인.
5. Result1: PRINT_ID가 정의됨:: 빌드 결과 생성된 실행파일도 제대로 수행된다. (PRINT_ID가 정의되었으므로, 0을 출력한다.)<br>
이때 make MACRO=-DPRINT_ID 를 통해 PRINT_ID 에 대한 MACRO 선언을 전달하였다.
<br><br>
![image](/uploads/8f61ba5e370b6245d22604970503fe48/image.png)
<br><br>
6. make clean 결과로 생성되었던 Object 파일과 실행 파일을 제거한 후 결과확인.
<br><br>
![image](/uploads/fa192db5bbaae25275fc7df6d5239748/image.png)<br><br>
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment