0w0
Makefile과 make ex1_3_main.c ex1_3_addnum.c 본문
대부분의 경우 프로그램을 작성할 때 소스 파일이 하나가 아닌 여러 개로 구성되고, 컴파일 시 이를 묶어서 실행 파일을 생성한다. 유닉스 시스템에서 이렇게 여러 소스 파일을 컴파일하고 링크해서 실행 파일을 생성하는 데 사용할 수 있는 도구로 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;
}
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
'Coding > System Programming' 카테고리의 다른 글
저수준 파일 입출력 (0) | 2016.10.06 |
---|---|
명령행 인자 출력 ex1_6.c ex1_7.c (0) | 2016.09.28 |
동적 메모리 할당 malloc realloc (0) | 2016.09.28 |
오류 처리 함수 perror함수, str-error함수 (0) | 2016.09.27 |
시스템 호출? ex1_1.c ex1_2.c (0) | 2016.09.27 |