...

[리눅스/C언어] make를 활용하여 계산 프로그램 작성 본문

CS/시스템 프로그래밍

[리눅스/C언어] make를 활용하여 계산 프로그램 작성

gi2 2022. 1. 9. 20:00

Make 도구는 리눅스에서 여러 파일들을 관리 해주는 도구이다. 

 

이를 이용함으로써 개발자는 여러 파일들을 쉽게 묶을 수 있고,

반복되는 컴파일을 자동화 할 수 있으며,

모듈화 프로그래밍을 쉽게 구현할 수 있게 된다. 

 

이제 Make 도구를 어떻게 활용할 수 있는지 예시를 살펴 보도록 한다. 

 

 


정말정말 간단한 계산 프로그램을 구현 하도록 한다. 

add/ sub 두 가지 연산을 모듈화 프로그래밍을 통해 Makefile을 이용해 구현해 볼 것이다. 

 

일단 헤더 파일과 헤더 파일의 메소드를 구현한 공용 C파일 하나를 구현해 주었다. 

이 두 파일은 Add 프로그램에도 이용되고, Sub 프로그램에도 이용될 것이다.

 

//Header.h

#ifndef MAKEHEADER_H
#define MAKEHEADER_H

void PrintValue(int,char);

#endif

//Common.c

#include "Header.h"

void PrintValue(int a, char msg)
{
        printf("[ %c ] : %d\n", msg,a);
}

 

앞서 말했듯, 모듈화 프로그램을 설명하기 위하여 정말 간단하게 구현된 프로그램이다. 

연산의 결과를 출력해주는 함수를 공용 함수로 지정하고 이를 헤더파일에서 정의한 후 Common 파일에서 구현하였다.

 

이제 연산을 하는 프로그램을 만들어보자. 

 

//Add.c

#include <stdio.h>
#include "Header.h"

int main(void) {
        int a = 10;
        int b = 15;

        int c = a + b;

        printf("Add Program\n");

        PrintValue(a,'A');
        PrintValue(b, 'B');
        PrintValue(c, 'C');

        return 0;
}

//Sub.c

#include <stdio.h>
#include "Header.h"

int main(void) {
        int a = 10;
        int b = 15;

        int c = a - b;

        printf("Sub Program\n");

        PrintValue(a,'A');
        PrintValue(b, 'B');
        PrintValue(c, 'C');

        return 0;
}

 

각 연산 프로그램은 각각의 main을 가질 수 있도록 구현하였다. 

Add.c 와 Sub.c의 main을 컴파일 하기 위해서는 Header.h 파일과 Common.c파일을 묶어주어야 할 것이다. 

이 때 Makefile이 사용된다.

 

//Makefile

CC=gcc -g
LIBS= -L C:/sd/MinGW/lib/gcc-lib/mingw32/3.2.3/ -lstdc++

all:Sub

Sub : Sub.o Common.o
        gcc -o Sub Sub.o Common.o
Sub.o : Sub.c Header.h
        $(CC) -c  Sub.c -o Sub.o  $(LIB)
Common.o : Common.c Header.h
        $(CC) -c Common.c -o Common.o  $(LIB)

clean:
        del -f Sub.exe
        del -f *.o

 

위 파일은 Sub.exe을 만들어주는 makefile이다. 

Sub.c와 Header.h를 묶어 Sub.o의 오브젝트 파일을 만들고, 

Common.c와 Header.h를 묶어 Common.o의 오브젝트 파일을 만든다. 

그리고 이 두 개의 오브젝트 파일을 묶어 Sub라는 하나의 응용 프로그램을 만드는 것이다.

 

 

리눅스 터미널에서 make 명령어를 입력하면 자동으로 makefile에서 정의된 파일들이 컴파일 되어 

'Sub' 라는 이름을 가진 응용 프로그램이 되는 것을 확인할 수 있다. 

 

응용 프로그램을 실행하면  빼기 프로그램이 정상적으로 작동하는 것을 확인할 수 있다. 

Add 프로그램도 마찬가지로 작동한다. 

 

 

추가적으로 Makefile이 매력적인 이유는 만약 파일을 수정하여 변경 사항이 발생했을 때,

make 명령어만 입력하면 응용 프로그램이 변경된 파일의 내용을 자동적으로 수용하여 수정된다는 것이다. 

 

 

 

끄ㅡ으읏

 

Comments