From 7f21245efa10b9264ac362f23b6cdf361b40ed5c Mon Sep 17 00:00:00 2001 From: BeomSooHeo <pung725@ajou.ac.kr> Date: Sun, 9 Aug 2020 03:26:36 +0900 Subject: [PATCH] Update 2020_08_07.md --- three_files_folder/2020_08_07.md | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/three_files_folder/2020_08_07.md b/three_files_folder/2020_08_07.md index 1fa5bbb..d7becee 100644 --- a/three_files_folder/2020_08_07.md +++ b/three_files_folder/2020_08_07.md @@ -2,20 +2,22 @@ ## Makefile 작성 - + <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>  <br><br> -4. 빌드 결과 생성된 실행파일도 제대로 수행된다. (PRINT_ID가 정의되지 않았기에, 1을 출력한다.) +4. Result1: PRINT_ID가 정의되지 않음:: 빌드 결과 생성된 실행파일도 제대로 수행된다. (PRINT_ID가 정의되지 않았기에, 1을 출력한다.) <br><br> <br><br> -5. make clean 결과로 생성되었던 Object 파일과 실행 파일을 제거한 후 결과확인. + +5. Result1: PRINT_ID가 정의됨:: 빌드 결과 생성된 실행파일도 제대로 수행된다. (PRINT_ID가 정의되었으므로, 0을 출력한다.)<br> +이때 make MACRO=-DPRINT_ID 를 통해 PRINT_ID 에 대한 MACRO 선언을 전달하였다. +<br><br> + +<br><br> + +6. make clean 결과로 생성되었던 Object 파일과 실행 파일을 제거한 후 결과확인. <br><br> <br><br> \ No newline at end of file -- GitLab