Make
파일의 종속관계 확인
수동으로 오브젝트 파일 일일히 관리하기 번거로움
makefile : 룰들의 집합. 룰(dependency, recipe)
Make command and makefile
모듈. 의존성을 make 파일(스크립트) 형태로 표현함
의존관계 / 타겟을 만들기 위한 gcc command
makefile로 실행파일을 만들 수 있다.
1. dependency
타겟과 의존파일
2. recipe
타겟을 생성하기 위한 command 집합. tap으로 구분
Preparing and Running Make
make 사용을 준비하려면,, 프로그램에 있는 파일 간의 관계를 설명하고 각 파일을 업데이트하는 명령을 제공하는 makefile이라는 파일을 만들어야 한다.
프로그램에서 실행파일은 소스파일을 → 컴파일하여 생성되는 목적파일에서 업데이트 된다.
make프로그램은 makefile 데이터베이스와 파일의 마지막 수정시간을 사용해 업데이트 해야할 파일을 결정한다.
$ make
타겟파일에서 시작!
의존파일이 더 최신이면 타겟을 생성 → 레시피에 의해서 만들어주기
의존파일 old → 레시피 작동 x
TIME STAMP : 수정시간
How make processes a makefile
main.c 가 최신이기 때문에 main.o는 재컴파일 되어야 한다.
→ sum 보다 main.o가 최신이 된다. → sum 다시 만들어진다.
$make
gcc -c main.c
gcc -c sum.c
gcc -o sum main.o sum.o
$make
make: 'sum' is up to date;.
$touch sum.c //실제 수정 없이 수정시간만 업데이트
$make
gcc -c sum.c
gcc -o sum main.o sum.o
Phony Targets
$make clean // 타겟명
rm -rf sum *.o
$make everything
rm -rf sum *.o
cp main.c main_bak.c
cp sum.c sum_bak.c
$ls
main_bak.c main.c Makefile sum_bak.c sum.c sum.h
How to use Variables
문자열로 변수 이름 정의한다. ( 이미 정의된 것들 제외)
참조할 때는 $ (변수이름)
Automatic Variables
$@ : target
$< : dependence files
'Major S-T-U-D-Y > System Programming' 카테고리의 다른 글
9. Derived type - array, pointer, and structure (1) (1) | 2024.11.12 |
---|---|
8. Procedure Call and Stack (0) | 2024.11.12 |
4. Machine level representation basics (1) (0) | 2024.10.15 |
GNU vi 주요 명령어 정리 (0) | 2024.10.03 |
1. A Tour of Computer Systems (1) (0) | 2024.09.13 |