Linux/Linux OS

gcc와 make를 이용한 컴파일

값진 2021. 6. 15. 06:25

gcc로 컴파일

   - age.c 파일

#include <stdio.h>

void age(){
	printf("I am 10 years old.\n");
}

 

   - 메인 소스 파일인 main.c, name.c, age.c, height.c를 만들었을 때, 오브젝트 파일을 생성한다.

$ gcc -c -o name.o name.c
$ gcc -c -o age.o age.c
$ gcc -c -o height.o height.c

-> ~.o 라는 이름으로 오브젝트 파일이 생성된다.

 

   - 오브젝트 파일로 컴파일 하기

$ gcc -o intro_exe main.o name.o age.o
$ ./intro_exe
My name is JK.
I am 10 years old.

 

make로 컴파일

make 파일은 목적파일(Target), 의존성(Dependency), 명령어(Command), 매크로(macro)로 이루어져있다.

( https://minchae.tistory.com/56?category=956680 참고)

 

  - makefle 만들기

intro_exe : name.o age.o main.o
  gcc -o intro_exe name.o age.o main.o

name.o : name.c
  gcc -c -o name.o name.c
  
age.o : age.c
  gcc -c -o age.o age.c
  
main.o : main.c
  gcc -c -o main.o main.c
  
clean : 
  rm *.o intro_exe

   - make clean 명령어로 오브젝트 파일과 실행파일 intro_exe 삭제

$ make clean
rm *.o intro_exe

   - make 실행

$ make
gcc -c -o name.o name.c
gcc -c -o age.o age.c
gcc -c -o main.o main.c
gcc -o intro_exe name.o age.o main.o

   - 성공적으로 실행 완료

$ ./intro_exe
My name is JK.
I am 10 years old.

 


Makefile의 기본 틀이 간단해서 확실히 익혀두고 계속 사용해도 좋을 것 같다. 작업 도중 빠르게 실행할 업무가 있을때 Makefile을 사용하면 편리할 것 같다.