일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 데코레이터패턴
- C
- NamedParameterNotBound
- @ModelAttribute
- BubbleSorting
- 자바
- decorator
- 10951
- setParameter
- @NotEmpty
- 디자인패턴
- designpattern
- pscp
- java
- Spring
- 백준
- 점세개
- junit
- @Spring
- 10844
- 숫자야구
- createQuery
- 여러인수
- gradle
- 쉬운 계단 수
- mycp
- Linux
- 전치행렬 #C
- springboot
- 자료구조
- Today
- Total
...
[리눅스/C언어] make를 활용하여 계산 프로그램 작성 본문
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 명령어만 입력하면 응용 프로그램이 변경된 파일의 내용을 자동적으로 수용하여 수정된다는 것이다.
끄ㅡ으읏

'CS > 시스템 프로그래밍' 카테고리의 다른 글
[리눅스/ 시스템 프로그래밍] Shell 구현하기 (0) | 2022.01.05 |
---|---|
[C언어/리눅스/시스템] copy 명령어 mycp 구현하기 (0) | 2021.11.03 |