OS

make 명령어

라부송 2019. 11. 3. 00:31
CC = gcc

final.img : Boot.img Sector2.img disk.img
	cat Boot.img Sector2.img disk.img > final.img

disk.img : main.img
	objcopy -O binary main.img disk.img

main.img :main.o
	ld -melf_i386 -Ttext 0x10200 -nostdlib main.o -o main.img

main.o : main.c
	gcc -c -m32 -ffreestanding main.c -o main.o

Boot.img : Boot.asm
	nasm -f bin -o Boot.img Boot.asm

Sector2.img : Sector2.asm
	nasm -f bin -o Sector2.img Sector2.asm

clean :
	rm *.o

다음 소스 코드를 Makefile 이름으로 만들어준다.

왜? 소스를 수정할 때마다 일일이 긴 명령어를 입력해 img 파일을 다시 얻어야 하는데, 이는 상당히 번거로운 일이다.

반복작업을 최소화하기 위해 make 명령어를 이용할 것이다. (Makefile 파일 내용으로 작업을 수행)

 

 

파일 내부에 Makefile을 만들어준 다음 make 명령어를 입력하면 작업이 수행된다.

 

make : 'final.img' is up to date 

가끔 이런 비슷한 오류가 뜨면서 작업이 수행되지 않을 때가 있는데,

같은 파일을 또 만드는 것으로 판단하여 실행하지 않는 것이다. 

touch Boot.img

그럴땐 touch boot.img 등의 명령어로 파일의 타임스탬프를 갱신해주면 정상적으로 실행된다.