0w0

Makefile과 make ex1_3_main.c ex1_3_addnum.c 본문

Coding/System Programming

Makefile과 make ex1_3_main.c ex1_3_addnum.c

0w0 2016. 9. 27. 22:28
728x90
반응형

대부분의 경우 프로그램을 작성할 때 소스 파일이 하나가 아닌 여러 개로 구성되고, 컴파일 시 이를 묶어서 실행 파일을 생성한다. 유닉스 시스템에서 이렇게 여러 소스 파일을 컴파일하고 링크해서 실행 파일을 생성하는 데 사용할 수 있는 도구로 Makefile 설정 파일과 make 명령을 제공한다.


Makefile (설정파일)
Makefile은 컴파일 명령, 소스 파일을 컴파일하는 방법, 링크할 파일들, 실행 파일명 등을 설정하는 파일


make (명령어)

make 명령은 Makefile을 읽고 해당 파일에서 지정한 대로 컴파일을 실행하고 실행 파일을 생성한다.



make 명령 사용 예



[root@localhost 3210w0]# cat ex1_3_addnum.c 

#include<stdio.h>


extern int addnum(int a, int b);


int main(void){

        int sum;


        sum=addnum(1,5); //addnum 함수를 외부에서 호출

        printf("sum 1~5=%d \n", sum);


        return 0;

}



[root@localhost 3210w0]# cat ex1_3_addnum.c 
int addnum(int a, int b){
int sum=0;

for(; a<=b; a++)
sum+=a;
return sum;
}
[root@localhost 3210w0]# 




ex1_3의 main과 addnum()함수로 make를 명령어를 사용하겠습니다.

Makefile 설정 파일 작성

[root@localhost 3210w0]# cat Makefile 

#Makefile

//ex1_3_main.c와 ex1_3_addnum.c 파일을 컴파일해 실행 파일에 생성하기 위한 Makefile이다.

//뛰어쓰기는 tab으로 일치시켜 공간을 같게 해주었다.



//실행파일을 어떻게 생성할 것인지를 지정한다.

add: ex1_3_main.o ex1_3_addnum.o

gcc -o add ex1_3_main.o ex1_3_addnum.o



//오브젝트 파일을 어떻게 생성할 것인지를 지정한다.

ex1_3_main.o: ex1_3_main.c

gcc -c ex1_3_main.c



//오브젝트 파일을 어떻게 생성할 것인지를 지정한다.

ex1_3_addnum.o: ex1_3_addnum.c

gcc -c ex1_3_addnum.c



//make clean을 수행할 때 실행할 명령을 지정한다.

clean:

rm -f ex1_3_main.o ex1_3_addnum.o add core


make 명령 사용

make 명령 실행

[root@localhost 3210w0]# make

gcc -c ex1_3_main.c

gcc -c ex1_3_addnum.c

gcc -o add ex1_3_main.o ex1_3_addnum.o

[root@localhost 3210w0]# 



결과

[root@localhost 3210w0]# ll

합계 68

-rw-r--r--. 1 root   root    243  9월 27 22:15 Makefile

-rwxr-xr-x. 1 root   root   8704  9월 27 22:25 add

-rw-r--r--. 1 root   root     84  9월 27 22:25 ex1_3_addnum.c

-rw-r--r--. 1 root   root   1264  9월 27 22:25 ex1_3_addnum.o

-rw-r--r--. 1 root   root    211  9월 27 22:24 ex1_3_main.c

-rw-r--r--. 1 root   root   1592  9월 27 22:25 ex1_3_main.o

drwxrwxr-x. 2 3210w0 3210w0 4096  9월 27 21:48 source

drwxr-xr-x. 2 3210w0 3210w0 4096  9월 13 11:21 공개

drwxr-xr-x. 2 3210w0 3210w0 4096  9월 13 11:21 다운로드

drwxr-xr-x. 2 3210w0 3210w0 4096  9월 13 11:21 문서

drwxr-xr-x. 2 3210w0 3210w0 4096  9월 13 11:21 바탕화면

drwxr-xr-x. 2 3210w0 3210w0 4096  9월 13 11:21 비디오

drwxr-xr-x. 2 3210w0 3210w0 4096  9월 13 11:21 사진

drwxr-xr-x. 2 3210w0 3210w0 4096  9월 13 11:21 서식

drwxr-xr-x. 2 3210w0 3210w0 4096  9월 13 11:21 음악

[root@localhost 3210w0]# ./add

sum 1~5=15 

[root@localhost 3210w0]# 





Makefile 작성 방식


rename: main.o func.o

gcc -o rename main.o func.o


main.o: main.c

gcc -c main.c


func.o: func.c

gcc -c func.c


clean:

rm -f main.o func.o rename core

728x90
반응형
Comments