| 태그 '컴파일링'에 해당되는 글 1건 |
| Makefile 만들기 |
Tech - https://ohyung.net/404 (YMD: 07/07/19 18:44)
요즘 한창 리눅스에서 소스 컴파일링을 하느라 Makefile을 쓸일이 많아졌습니다.

참고 사이트도 뒤적거리면서 RTA 세미나 시간에 받은 소스도 뒤적거리면서 대충 감을 잡긴 하였는데... 한번 올려봅니다.

main.c 와 tftlec_driver.c 라는 파일을 컴파일링 하여 응용 프로그램을 짠다고 가정합니다.

tftlcd 라는 최종 프로그램을 만들어야 합니다.
그러기 위해서 일단 main.c 를 컴파일링 하여 main.o 파일을 만들어 냅니다.
그리고 tftlcd_driver.c를 컴파일링 하여 tftlcd_driver.o 파일을 만듭니다.
그뒤 두개의 파일을 합쳐서 tftlcd라는 최종 프로그램을 컴파일하게 되는것입니다.

그렇다면 콘솔에서 아래처럼 치겠죠...

Code Type : DOS
$arm-linux-gcc  -I. -c main.c
$arm-linux-gcc -I. -c tftlcd_driver.c

$arm-linux-gcc -o tftlcd main.o tftlcd_driver.o
$rm -f  main.o tftlcd_driver.o *.bak


이걸 Makefile로 만들면 아래와 같습니다.
Code Type : DOS
CC = arm-linux-gcc
INCLUDE = .

tftlcd : main.o tftlcd_driver.o
    $(CC) -o tftlcd main.o tftlcd_driver.o

main.o : main.c
    $(CC)  -I$(INCLUDE) -c main.c

tftlcd_driver.o : tftlcd_driver.c
    $(CC) -I$(INCLUDE) -c tftlcd_driver.c
clean :
    rm -f main.o tftlcd_driver.o *.bak


Makefile을 에디터로 만든다음에 써주시면 됩니다.
위의 것을 일반적인 명령으로 쓰자면 다음과 같습니다. ( 제가 이해하기론;;; )

CC 는 compiler의 이름입니다. 저의경우엔 arm-linux-gcc를 사용합니다.
INCLUDE 는 디렉토리 입니다. 나중에 arm-linux-gcc -I솰라솰라 하기 위해서 사용합니다...
만... 여기선 별로;;; 큰 의미는 없습니다.

그뒤 tftlcd 를 한뒤 : ( 콜론 ) 으로 구분해주고 .o 파일들을 정의 해줍니다.
그뒤 $(CC)로 매크로 정의한뒤 뒷 명령어들을 적어주면 좋겠죠.
나머지도 같은 방식입니다.
그리고 clean은 '$make clean' 할때 쓰게 되는데 컴파일링후의 자잘한 쓰레기 파일들을 삭제할때 사용됩니다.

Code Type : DOS
CC = arm-linux-gcc
INCLUDE = .

MAIN_OBJ = main.o
MAIN_SRC = main.c

DRV_OBJ = tftlcd_driver.o
DRV_SRC = tftlcd_driver.c

MAKE_TARGET = tftlcd

$(MAKE_TARGET) : $(MAIN_OBJ) $(DRV_OBJ)
    $(CC) -o $(MAKE_TARGET) $(MAIN_OBJ) $(DRV_OBJ)

$(MAIN_OBJ) : $(MAIN_SRC)
    $(CC)  -I$(INCLUDE) -c $(MAIN_SRC)

$(DRV_OBJ) : $(DRV_SRC)
    $(CC) -I$(INCLUDE) -c $(DRV_SRC)
clean :
    rm -f $(MAIN_OBJ) $(DRV_OBJ) *.bak

일단은 전부 매크로로 바꾼 모습입니다. 대충 감이 잡히시나요?

일단 제가 이해한것은 여기까지입니다. 덜덜덜;;

갑자기 민망함이 급속도로 밀려오는 이 느낌은;;;

| 이 포스트에 대한 이용규약 |
Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시 2.0 라이센스 에 따라 이용하실 수 있습니다.
This work is licensed under a Creative Commons Attribution 2.0 Korea LicenseLink in a new window.

| 이 글과 태그로 연관된 글 |

| 트랙백 |
트랙백 주소 :: https://www.ohyung.net/rserver.php?mode=tb&sl=404