본문으로 이동
메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.
프로그램 그룹을 유지하기 위한 GNU make 유틸리티.
  • 유닉스와 리눅스 모두에서 명령어와 옵션이 같음
  • 경로 : /usr/bin/make
make [-f makefile] [옵션]···[타겟]···
  • -C DIRECTORY, --directory=DIRECTORY : makefile 파일의 위치(DIRECTORY)를 지정한다.
  • -d : 상세한 디버깅 정보를 출력한다.
  • --debug[=FLAGS] : 다양한 형태의 디버깅 정보를 출력한다.
  • -e, --environment-overrides : 시스템의 환경 변수의 정보가 makefile의 설정 내용보다 우선한다.
  • -f FILE, --file=FILE, --makefile=FILE : makefile를 지정한 파일(FILE)에서 읽는다.
  • -h, --help : 사용법을 출력한다.
  • -i, --ignore-errors: 에러를 무시한다.
  • -I DIRECTORY, --include-dir=DIRECTORY : include 디렉터리를 지정한다.
  • -k, --keep-going : 타겟 파일을 생성하지 못하더라도 계속 진행한다.
  • --s, --silent, --quiet : 명령어를 출력하지 않는다.
  • -S, --no-keep-going, --stop : -k 옵션을 비활성화한다.
  • -v, --version: 버전 정보를 출력한다.
  • -w, --print-directory : 현재 디렉터리를 출력한다.
  • --no-print-directory: -w 옵션을 비활성화한다.
  • --warn-undefined-variables : undefined-variables 경고를 출력한다.

make 는 현재 디렉터리의 Makefile(또는 makefile, GNUmakefile)을 읽어 그 안의 규칙대로 컴파일·설치를 한다. 규칙은 다음 꼴이다.

타겟: 의존 파일...
(탭)명령
  • 명령 줄은 반드시 탭 문자로 시작한다
  • 타겟 파일이 의존 파일보다 오래됐을 때만 명령을 다시 실행하므로, 바뀐 파일만 다시 컴파일한다
  • 흔히 쓰는 타겟 : all(기본 빌드), install(설치), clean(빌드 결과 삭제)

소스 설치는 보통 ./configure → make → make install 순서다. configure 는 시스템 환경을 검사해 Makefile 을 만들어 주는 단계이므로, 압축을 푼 소스에 configure 가 없더라도 Makefile 이 이미 들어 있으면 configure 단계 없이 바로 make 로 넘어갈 수 있다. 자세한 순서는 리눅스 패키지 관리#소스 설치를 본다.

# 현재 디렉터리의 Makefile 로 빌드
$ make

# 설치 (root 권한)
# make install

# 다른 이름의 파일을 규칙 파일로 쓴다
$ make -f build.mk

# 다른 디렉터리에서 빌드
$ make -C src

# 작업 4개를 동시에 실행
$ make -j4

간단한 Makefile 예

hello: hello.o
	gcc -o hello hello.o

hello.o: hello.c
	gcc -c hello.c

clean:
	rm -f hello hello.o