[c] Makefile이란?

letsbebrave·2022년 5월 13일
0

C

목록 보기
6/7
  1. Makefile의 정의
  • linux상에서 반복 적으로 발생하는 컴파일을 쉽게하기 위해서 사용하는 make 프로그램의 설정 파일이다.

  • Makefile을 통하여 library 및 컴파일 환경을 관리 할 수 있다.

  • Shell에서 컴파일하는 방법 중 하나이다.

  • Makefile이라는 파일에 어떤 파일을 컴파일 하는지, 어떤 방식으로 컴파일 할 지 작성해놓는다.

  • make이라는 명령어를 입력하면 Makefile이 들어있는 디렉토리에서 파일들의 종속관계를 파악하여 자동적으로 컴파일하게 된다.

    즉, Makefile을 사용하여 컴파일하면 여러 개의 파일을 컴파일할 때, 자동화로 인해 시간을 절약하고 프로그램의 종속 구조를 쉽게 파악할 수 있다.

  1. Makefile의 기본 구조
  • Target (타겟) : Dependency (Target이 의존하는 파일들)
  • Command (명령어) or Recipes (실행할 명령어) <- 이것의 앞은 반드시 tab키로 들여쓰기 해줘야 한다.
  1. Makefile의 매크로 정의란 무엇인가?
  • Makefile에서 미리 정의 되어있는 환경 변수라고 생각하면된다.
  • 기본 구조에서 CC = gcc 에서 CC가 매크로이다.
  1. 예제를 통한 Makefile 만들기
  • hello.c 파일을 실행하기
cc = gcc

TARGET = hello

$(TARGET) : hello.o
	$(cc) -o $(TARGET) hello.o

hello.o : hello.c
	$(cc) -c -o hello.o hello.c

clean :
	rm -rf $(TARGET)
  • hostinfo.c 파일을 실행하기
    -c 옵션은 목적 파일을 생성하는 옵션
    -o 옵션은 생성될 파일 이름을 지정하는 옵션
CC = gcc
make: hostinfo # make를 shell에 쓰면 hostinfo.c 파일이 아래의 과정을 거쳐서 컴파일됨 
test: hostinfo # hostinfo.c 파일이 실행됨
    ./hostinfo twitter.com # 실행해보고 싶은 도메인 써줌 (scanf로 넣어주는 게 아니라 실행할 때 넣어주는 것임)
csapp.o: csapp.c csapp.h # csapp.o를 만들기 위해 csapp.c csapp.h라는 파일들이 필요함
    $(CC) -c csapp.c # 현재 타겟 csapp.o의 종속 항목 리스트 (csapp.c를 컴파일하여 csapp.o를 만들어줌)
hostinfo.o: hostinfo.c csapp.h
    $(CC) -c hostinfo.c # 현재 타겟 hostinfo.o의 종속 항목 리스트 (hostinfo.c를 컴파일하여 hostinfo.o를 만들어줌)
hostinfo: hostinfo.o csapp.o
    $(CC) hostinfo.o csapp.o -o hostinfo # -o 옵션은 생성될 파일의 이름을 지정하는 옵션
clean:
    rm -rf csapp.o hostinfo.o hostinfo

출처

https://doitnow-man.tistory.com/entry/Makefile-Linux-Makefile%EC%9D%B4%EB%9E%80
https://cloud-oky.tistory.com/983
https://bowbowbow.tistory.com/12

profile
그게, 할 수 있다고 믿어야 해

0개의 댓글