• 검색 결과가 없습니다.

make 0. 다중 모듈 프로그램 - 여러 개의 .c 파일로 구성(예 - KOCw

N/A
N/A
Protected

Academic year: 2024

Share "make 0. 다중 모듈 프로그램 - 여러 개의 .c 파일로 구성(예 - KOCw"

Copied!
2
0
0

로드 중.... (전체 텍스트 보기)

전체 글

(1)

make

0. 다중 모듈 프로그램

- 여러 개의 .c 파일로 구성(예: file1.c file2.c ... filen.c 로 구성)

0.1 main.c

#include <stdio.h>

#include "sum.h"

int main() { int x, y, z;

printf("Insert 2 Numbers: ");

scanf("%d %d", &x, &y);

z = sum(x, y) + INIT_VALUE;

printf("sum = %d\n", z);

}

0.2 sum.h

#define INIT_VALUE 100 int sum(int, int);

0.3 sum.c

#include <stdio.h>

#include "sum.h"

int sum(int a, int b) { int c;

c = a + b;

return c;

}

0.3 실행

$gcc –o sum main.c sum.c 또는

$gcc –c main.c ; main.o 생성

$gcc –c sum.c ; sum.o 생성

$gcc –o sum main.o sum.o

실행파일 sum을 만든다.

(2)

1. 컴파일 트리

myprog

x.o y.o

x.c x.h y.c

위 컴파일 트리는 myprog라는 실행파일이 어떤 파일들에 의해 만들어지는 가를 보여주고 있 다. myprog는 x.o 와 y.o 라는 두 오브젝트파일이 링크되어 만들어진다.

cc x.o y.o -o myprog

오브젝트 파일은 컴파일은 되었지만 아직 링크되지 않은 파일이다. x.o 와 y.o 는 다시 각각 x.c, x.h (x.o 의 경우), y.c, x.h (y.o 의 경우)에 의해 만들어진다.

x.c: #include "x.h"

foo(){...}

y.c: #include "x.h"

foo1(){....}

cc -c x.c cc -c y.c

결국 myprog 파일이 만들어지는 과정은 1) cc -c x.c : x.o 생성

2) cc -c y.c : y.o 생성 3) cc x.o y.o -o myprog

와 같은 3 단계를 거친다. 만일 우리가 이중 어느 한 파일을 변경한다면 모든 스텝을 다 되풀 이해도 되지만 컴파일 트리를 보고 필요한 부분만 재컴파일하는 것이 더 효율적이다. 예를 들 어 x.c 가 변경되었다면 1)과 3)만 수행하면 된다. 2)의 결과물인 y.o는 x.c 가 변경된다 해도 변하지 않기 때문에 다시 컴파일 하는 것은 자원의 낭비일 뿐이다.

참조

관련 문서