OSS - Utility

Pongchi·2022년 6월 10일
0

Command 'make'

  • make는 프로그램 그룹을 효율적으로 유지하기 위한 유틸리티
    - 변경된 프로그램에 대한 부분적 컴파일 수행
    - 프로그램 개발을 넘어 일련의 명령어 처리에서도 사용 가능

how to use

$make [-f] filename
- f 옵션이 없으면 GNUmakefile, Makefile, makefile을 찾아서 사용함

필요성

  • 모듈 개발에서의 의존성 관계 확인 가능
  • 의존성 파일 중 일부가 변경되면 관련된 모든 파일 재컴파일 수행

내부 구성

  • target, dependency, command로 구성
    - Target : command가 수행된 결과 및 label 정의
    - Dependency : dependency 관계 정의
    - Command : dependency 관계에 정의된 파일의 내용이 변경되었거나 파일이 없는 경우 수행하는 일련의 명령어
    ( Shell에서 수행하는 명령어, 항상 앞에 tab이 필요 )

예시



Macro 사용

C언어의 define 처럼 특정 문자열 정의

OBJS = main.o copy.o
main: $(OBJS)
	gcc -o main $(OBJS)
main.o: main.c copy.h
	gcc -c main.c
copy.o: copy.c
	gcc -c copy.c
clean:
	rm *.o

사전에 정해진 매크로(Pre-defined macro)

  • ASFLAGS
  • CFLAGS
  • CC
  • CPPFLAGS
  • LD
  • LDFLAGS
  • LEX
  • YACC
  • ...

사전에 정해진 매크로는 사용자 재정의 가능

  • Ex: CFLAGS = -g

INC 매크로

gcc 컴파일 시 Include 되는 header(.h) 파일 추가 경로

OBJS = main.o copy.o
INC = -I /home/test
...

INC

  • include 되는 헤더파일의 Path 추가

LIBS

  • 링크 시에 필요한 라이브러리 추가

CFLAGS

  • 컴파일에 필요한 각종옵션 추가

OBJS

  • 오브젝트 파일의 이름 명시

SRCS

  • 소스파일의 이름 명시

TARGET

  • 링크 후에 생성될 실행파일의 이름 명시

실행하기

  • 전체 실행 : $make
  • label 실행 : $make main 또는 $make clean
profile
- I'm going to be a ???

0개의 댓글