IT world

리눅스 Makefile 본문

리눅스

리눅스 Makefile

엄킹 2019. 11. 26. 18:47




이번 포스팅은 Makefile에 대해서 작성하려고 한다.





Makefile이란 


내용이 복잡하고 오래걸리는 컴파일을 간단하게 한페이지에 작성해서 하나의 파일로 사용하는것이 장점이다.


makefile은 파일의 상호 의존 관계의 목록으로 make에게 어떤 프로그램을 컴파일하고 링크해야하는 지 방법을 설명한 것으로


make명령은 makefile에 설정된 정보를 읽어서 여러 소스 파일을 컴파일하고 최종 실행 파일을 생성한다.





작업을 수행하기 전에 사용하는 명령들에 대해 간단히 소개하고 시작하겠다.


1. gcc : 필자는 c언어파일을 만들어서 사용하기 때문에 c언어 컴파일러인 gcc를 사용.


2. -c : 컴파일을 하기 위한 명령


3. -o : 각각의 파일들이 컴파일 된다면 .o의 확장명을 사용하는 파일들이 생성되고 컴파일이 끝난 파일로 실제로 동작하는 파일들이다.

해당 파일들을 최종 실행할 파일에 -o를 통해 등록하여 최종 파일이 실행될 수 있도록 설정하는 것이다.










Makefile을 사용하기 위해 Temp폴더에 별도의 makefile 폴더를 생성


vi 편집기를 통해 함수의 기능을 수행하는 kk1.c 와 kk2.c 파일을 생성하고 메인의 기능을 수행하는 main.c, 헤더파일인 main.h를 생성.



[kk1.c 생성]




[kk2.c 생성]




[main.c 생성]





[main.h 생성]





vi 편집기를 통해 Makefile 생성




이런식으로 makefile을 생성하는데 


최종 실행 파일을 app.out로 사용할 것이며 실행파일들을 등록한다


app.out: ... 이 부분에 어떤 것을 사용하겠다고 룰을 정한 것이고


gcc -o를 통해 명령을 정의한 것이다.









변수를 사용하여 코드를 대신하여 변수를 사용한다 


코드의 유연성을 위해 사용하며 $를 사용하여 해당 변수를 참조한다.





[이렇게 변수를 사용해서 유연성을 높였다.]


해당 파일을 수행할 때마다 .o 파일들과 app.out을 지워준 후에 수행해야하고 


rm -rf app.out *.o 을 계속 입력해줘야하는 귀찮음이 있는데


clean이란 작업을 넣어줘서 쉽게 작성할 수 있도록 추가하였다.





make를 입력해서 자동 컴파일 시키고 최종실행 파일인 app.out 파일을 생성한다.


그 후 ./app.out 을 입력하면 해당 파일이 실행되서 출력결과를 확인할 수 있다.



[make를 입력하여 컴파일을 수행하면 .o 실행파일들과 app.out파일이 생성되고 출력결과를 확인할 수 있다.]




make clean을 통해 모든 오브젝트 파일을 삭제한 이 후 다시 수행해도 결과는 동일하다.







 

또한 kk2.c 파일을 수정한 뒤 make 명령을 입력하면 수정이 이루어진 kk2.c만 재컴파일이 이루어지고 나머지는 컴파일이 반복되지 않는다 (컴파일의 최소화!)


kk2.c파일을 수정없이 재저장 한 이후에 make명령으로 실행했을 때에도 kk2.c가 재번역된다. 



'리눅스' 카테고리의 다른 글

리눅스 - Hive  (0) 2019.11.26
리눅스 wordcount를 사용해서 데이터 값 시각화하기  (0) 2019.11.26
리눅스 하둡1  (0) 2019.11.26
리눅스 ssh key 생성  (0) 2019.11.25
리눅스 간단한 예제  (0) 2019.11.22
Comments