본문 바로가기
리눅스

C언어 여러가지 파일(.c .h 등) 한꺼번에 컴파일, 실행 (Makefile)

by miiinn 2022. 5. 10.

1.  object 파일 만들기

- 헤더파일(.h)은 main.c 등에 명시되어 있으므로 따로 만들지 않아도 된다. 

$ gcc -c -o main.o main.c
$ gcc -c -o A.o A.c
$ gcc -c -o B.0 B.c
...

(main.c를 컴파일하여 main.o라는 이름의 파일을 만든다.)

 

- 모든 c파일(.c)에 해당하는 오브젝트 파일(.o)을 만들어야 한다.

 

 

2. object 파일 묶기

$ gcc -o a.out main.o A.o B.o ...

- object 파일들을 묶어 하나의 실행파일 (a.out)을 만든다.

 

3. Makefile 만들기

 

( Makefile을 만드는 기본 원리는 다음과 같으나 잘 이해가 되지 않으니 예제를 통해 보는것이 낫다. )

<target> : <dependency>
         (tab)<recipe>

* <target> : 대상 / <dependency> : 의존관계 / <recipe> : 명령

 

 

 

-  Makefile 파일을 만든 후 다음과 같이 써준다.

a.out : main.o A.o B.o
    (tab) gcc -o a.out main.o A.o B.o

main.o : main.c
    (tab) gcc -c -o main.o main.c

A.o : A.c
    (tab) gcc -c -o A.o A.c

B.o : B.c
    (tab) gcc -c -o B.o B.c

clean:
    (tab) rm *.o a.out

- 참고로 (tab) 부분은 무조건 탭으로 들여쓰기 해주어야 한다.

 

4. Makefile 실행하기

$ make
$ make clean

- make 명령어를 통해 a.out 실행파일이 생성된다. 이것을 실행하면 된다.

- make clean 명령어는 .o 파일과 a.out 파일을 삭제해준다.