일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- dhcp
- 함수형
- Next
- Router
- Layer
- Linux
- Layer2
- class
- 자바
- network
- OSI
- nextjs
- 포트
- ip 할당
- 자격증
- Mac
- Port
- java
- 프로그래밍
- Layer4
- Packet
- frame
- 네트워크
- oracle
- 스위치
- 오라클
- SQLD
- next.js
- 자바8
- Python
- Today
- Total
BEER&DEV
[Linux] 리눅스의 make 와 프로젝트의 makefile 본문
리눅스에서의 make 명령어 이해하기
make 명령어는 주로 대규모 및 복잡한 소프트웨어 프로젝트에서 사용되며, 소스 코드를 컴파일하고 실행 파일을 생성하는 등의 작업을 자동화하는 데 유용합니다. make를 사용하면 프로젝트의 빌드 프로세스를 효율적으로 관리할 수 있습니다.
Makefile 작성
make를 사용하기 위해서는 프로젝트 디렉토리에 Makefile이라는 파일이 필요합니다. Makefile은 make가 실행할 명령어들을 정의하는 텍스트 파일입니다. Makefile은 다양한 블록들로 구성되며, 각 블록은 타겟(Target)과 해당 타겟을 실행하기 위한 명령어들로 이루어집니다.
예를 들어, 다음은 간단한 Makefile의 예시입니다.
all: hello
hello:
gcc -o hello hello.c
위의 Makefile은 "hello"라는 실행 파일을 만드는데, 이를 위해 gcc
컴파일러를 사용합니다. all
타겟은 hello
타겟을 의존하고 있습니다. 따라서 make all
을 실행하면 hello
타겟을 실행하여 실행 파일을 생성합니다.
make 명령어 실행
make를 실행할 때는 다음과 같은 방식으로 실행합니다.
make [타겟]
여기서 [타겟]
은 Makefile에 정의된 타겟의 이름입니다. 예를 들어, 위의 예시에서는 다음과 같이 실행할 수 있습니다.
make hello
이 명령어를 실행하면 hello
타겟이 실행되어 실행 파일이 생성됩니다.
변수 사용
Makefile에서는 변수를 사용하여 코드를 더 유연하게 만들 수 있습니다. 변수는 다음과 같이 정의합니다.
CC=gcc
위의 예시에서는 CC
라는 변수를 정의하고, 그 값으로 gcc
를 할당하였습니다. 이후에는 ${CC}
와 같이 변수를 사용하여 명령어를 작성할 수 있습니다.
의존성 관리
Makefile에서는 타겟들 간의 의존성을 관리할 수 있습니다. 예를 들어, 만약 어떤 파일이 변경되었을 때 해당 파일에 의존하는 다른 파일들도 함께 업데이트되어야 한다면, Makefile에서 이러한 의존 관계를 명시할 수 있습니다.
all: main.o helper.o
gcc -o program main.o helper.o
main.o: main.c
gcc -c main.c
helper.o: helper.c
gcc -c helper.c
위의 예시에서는 all
타겟이 main.o
와 helper.o
에 의존하고 있습니다. 따라서 all
타겟을 실행하면 main.o
와 helper.o
를 먼저 생성한 뒤, 이를 이용하여 program
실행 파일을 생성합니다.
이와 같이 make를 사용하면 복잡한 빌드 프로세스를 효율적으로 관리할 수 있습니다. make는 프로젝트의 빌드, 테스트, 배포 등 다양한 작업에 유용하게 활용될 수 있습니다.
'생활 > 개발일지' 카테고리의 다른 글
AWS에서 Python + Celery + Flower + venv 환경 설정하기 (0) | 2024.04.11 |
---|