IT

리눅스 : make란?

윤채니챈 2023. 10. 4. 19:28
728x90
반응형

make는 주로 소스 코드를 컴파일하고 프로그램을 빌드하기 위한 도구

make는 주로 리눅스와 유닉스 기반 시스템에서 사용되는 소프트웨어 빌드 도구이다. 이 도구는 소스 코드 파일들을 컴파일하고, 연결하여 실행 파일, 라이브러리 등을 생성하는 작업을 자동화하는 데 사용된다.

make의 작동 방식과 주요 특징은 다음과 같다.

  1. Makefile:
    • make는 Makefile이라는 파일을 참조하여 빌드 과정을 진행. Makefile에는 타겟, 종속성, 빌드 명령 등이 정의되어 있습.
    • 예를 들어, 실행 파일을 생성하기 위해 어떤 소스 파일들이 필요한지, 그리고 이 파일들을 어떻게 컴파일하고 연결해야 하는지에 대한 정보가 Makefile에 명시된다.

1. 소스 코드: program.c

#include <stdio.h>

int main() {
    printf("Hello, Make!\n");
    return 0;
}

 

2. Makefile:

# 컴파일러 지정
CC = gcc

# 컴파일 옵션 지정
CFLAGS = -Wall

# 타겟
all: program

program: program.o
    $(CC) $(CFLAGS) -o program program.o

program.o: program.c
    $(CC) $(CFLAGS) -c program.c

# clean 타겟: 빌드 과정에서 생성된 오브젝트 파일과 실행 파일 삭제
clean:
    rm -f program.o program

 

 

3. 명령어 실행:

1. make 또는 make all 명령어로 프로그램 컴파일:

$ make

 

2. 타겟과 종속성:

  • Makefile에는 여러 타겟이 정의될 수 있다. 타겟은 빌드하려는 결과물(예: 실행 파일)이나 수행하려는 작업(예: 파일 삭제)을 의미
  • 각 타겟은 종속성을 가질 수 있습니다. 예를 들어, 실행 파일을 생성하는 타겟은 여러 오브젝트 파일들에 종속될 수 있다.

3. 자동 종속성 추적:

  • make는 파일의 수정 날짜를 기반으로 종속성을 확인한다. 만약 오브젝트 파일의 소스 코드가 변경되지 않았다면, 해당 오브젝트 파일을 다시 컴파일하지 않는다. 이런 방식으로 불필요한 컴파일 과정을 생략하므로 빌드 시간을 단축시킵니다.

4. 병렬 빌드:

  • make는 -j 옵션과 함께 사용하여 여러 타겟을 동시에 빌드할 수 있다. 이는 멀티 코어 프로세서를 효과적으로 활용하여 빌드 시간을 줄이는 데 도움이 된다.

5. 포터빌리티:

  • Makefile은 다양한 플랫폼과 환경에서 동작할 수 있도록 작성될 수 있다. 따라서 동일한 소스 코드를 다양한 시스템에서 쉽게 빌드할 수 있다.

 

 

728x90
반응형