Makefile을 작성 하기전 샘플 코드를 준비하도록 하겠다.
샘플 코드는 3개를 준비하도록 하자.
test.h / test.c / main.c
test.h
#ifndef _TEST_H_ #define _TEST_H_ #ifndef _STDIO_H_ #define _STDIO_H_ #include <stdio.h> #endif extern int i; extern void HelloWorld(void); extern void setI(int n); #endif |
우선 헤더파일의 내용은 변수 i와 문자 및 변수 i를 출력하는 함수, 변수 i의 값을 변경하는 함수 3개를 선언한다.
*Tip.
참고로 헤더파일의 내용엔 전처리기문으로 헤더의 선언을 방지하도록 하는게 좋으며, #define 의 내용과 변수 선언, 함수 선언을 할수 있는데 변수는 초기화 하지 않고 선언만 해야된다.
test.c
#include "test.h" int i; void HelloWorld(void) { fprintf(stdout, "Hello world. %d\n", i); } void setI(int n) { i = n; } |
test.c는 헤더파일에서 선언한 내용을 구현한다.
extern한 변수를 정의하고 함수 내용들을 구현해준다.
main.c
#include <stdio.h> #include "test.h" int main(void) { setI(0); HelloWorld(); setI(1000); HelloWorld();
return 0; } |
main.c의 내용은 간단하다 i의 값을 초기화 하고 출력하고 다시 반복하는것이다.
여기까지 3개의 샘플 파일이 준비가 되었다면 다음으로 Makefile을 만들 것이다.
참고로 3개의 파일은 같은 디렉토리에 존재해야지 예제를 돌려보고 확인 할 수 있다.
Makefile
#컴파일러 CC=gcc #소스코드 SOURCES = main.c test.c #목적파일로 컴파일을 자동으로 해준다. #아래의 내용을 풀어쓰자면 다음과 같다 #gcc -c -o main.o main.c #gcc -c -o test.o test.c OBJECTS = ${SOURCES:.c=.o} #make clean 명령을 쳤을때 make 명령으로 컴파일하고 생성된 파일들을 지우기 위해 #다음과 같이 RM이라는 변수에 rm -f 명령을 저장한다. RM = rm -f
OUT = mtest #OUT 이라는 변수에 담긴 이름을 가진 결과물이 OBJECTS의 결과물로 만들어지는 내용이다. #아래의 내용을 풀어쓰자면 다음과 같다 #gcc -o mtest main.o test. o test.h $(OUT): $(OBJECTS) $(CC) -o $(OUT) $(OBJECTS) $(LIBS) test.h #아래는 make clean의 명령어 내용이다. clean: $(RM) $(OUT) *.o |
'Linux > Ubuntu' 카테고리의 다른 글
윈도우에서 우분투 원격데스크톱 이용 (0) | 2014.08.25 |
---|---|
odroid xu apt-get update (0) | 2014.07.30 |
grub 멀티부팅 순서 변경 (0) | 2014.07.10 |
영문 폴더명으로 변경하기 (2) | 2014.07.05 |
우분투 12.04 LTS 에서 KVM Bridge Mode 설치하기 (0) | 2014.04.03 |