make file에 대한 질문....
글쓴이: garam311 / 작성시간: 월, 2003/07/21 - 5:39오후
make file에 대해서 질문 드리려고 하는데요..
make file은 해석을 못하겠네요..
이해 가는 것두 있구 안가는 것두 있구요..
HDRS = ext_c.h \ model.h \ proto_c.h \ skeleton.h \ x_tool.h OBJS = client.o \ cond.o \ criteria.o \ dif_eq.o \ main.o \ eom.o \ m_geo.o \ higher_n.o \ lower_n.o \ motion.o \ mx3math.o \ optimize.o \ output.o \ r_model.o \ w_txt.o \ x_tool.o PROGRAM = pedaling.out CFLAGS = -I/usr/11R6/include -O3 -funroll-loops -DROWSIM ->특히 요놈이 이해가 잘 안가는데요.......^^; LD = cc LDFLAGS = -L/usr/X11R6/lib -lX11 -lm -> 그리구 요놈두요.... LIBS = $(PROGRAM): $(OBJS) $(LIBS) $(LD) $(OBJS) $(LIBS) -o $(PROGRAM) $(LDFLAGS) ->이부분두 역시 이해가 잘안감.. ->이렇게 따져보니 다 이해가 안가는것 같네요... ㅠ.ㅠ client.o: $(HDRS) cond.o: $(HDRS) criteria.o: $(HDRS) dif_eq.o: $(HDRS) main.o: $(HDRS) eom.o: $(HDRS) m_geo.o: $(HDRS) higher_n.o: $(HDRS) lower_n.o: $(HDRS) motion.o: $(HDRS) mx3math.o: $(HDRS) output.o: $(HDRS) optimize.o: $(HDRS) r_model.o: $(HDRS) w_txt.o: $(HDRS) x_tool.o: $(HDRS)
CFLAGS와 LDFLAGS의 의미에 대해서 줌 설명해주세요..
감사합니다.
--나두 질문에 답해주구 싶다.... --
Forums:
CFLAGS 이놈은 일반적인 컴파일 옵션들을 선언해 주는 부분이 됩니다.
CFLAGS 이놈은 일반적인 컴파일 옵션들을 선언해 주는 부분이 됩니다.
예를 들어
-I 이건 include할 head 파일들의 path를 지정하는 놈이고요...
-O3 이건 optimization을 어느 정도로 할것인지를 설정하는 것입니다.
이건 번호가 높을 수록 optimization이 좋아지긴 하지만...
compile 후 실행에 문제가 있을 수도 있으니 주의를 요합니다.
-funroll-loops
이건 for() 같은 loop문을 unroll(풀어서 써 줌)하여 최적화에 도움을 주는 옵션입니다.
LDFLAGS 이놈은 library에 관한 설정을 선언해 주는 부분입니다.
-L/usr/X11R6/lib 라이브러리가 있는 PATH
-lX11 X11 library를 사용함
-lm math library를 사용함
이런 식으로 사용할 library PATH나 library를 명시적으로 해주는 부분입니다.
뭐... 꼭 이렇게 해야 하는건 아니지만...
일반적으로 이렇게 사용을 하니...
규칙을 지키면서 하면은 편리학게 사용 할수도 있고, 해석도 쉬울것 입니다.
<어떠한 역경에도 굴하지 않는 '하양 지훈'>
#include <com.h> <C2H5OH.h> <woman.h>
do { if (com) hacking(); if (money) drinking(); if (women) loving(); } while (1);
안녕하세요.이곳 KLDP에 보시면 Makefile 작성법에 대해
안녕하세요.
이곳 KLDP에 보시면 Makefile 작성법에 대해 나와 있습니다. 이게 늘상 참좀하시는것이 아니라 한번 자신의 프로젝트에 맞게 만들어 놓으시면 두구 두구 사용하실수 있으신거니 한번 날잡아서(1-2시간이면 충분하실겁니다.) 익혀 두시는게 어떠실까요.?
CFLAGS = -I/usr/11R6/include -O3 -funroll-loops -DROWSIM
->특히 요놈이 이해가 잘 안가는데요.......^^;
컴파일 옵션에 대한 설정입니다. 그런데 올려 주신 Makefile이 끝까지 안나와 있는지 CFLAGS 부분이 밑에 없는것 같습니다. 하여간.... 보시면 먼저 -I/usr/11R6/include 는 X11 인클루드 디렉토리 설정입니다. 이와 같이 자신이 인쿨루드한 헤더 파일이 위치한 디렉토리를 설정해주신겁니다.
-O3 그다음은 C 컴파일러의 옵티마이즈 레벨 옵션입니다.
-funroll-loops 이건 제가 모르겠습니다.
man gcc or man cc 참조
-DROWSIM 프로그래상에 사용하시는 메크로 'ROWSIM'를 정의 하신것 같습니다.
LDFLAGS = -L/usr/X11R6/lib -lX11 -lm -> 그리구 요놈두요....
이곳은 라이브러리 정의 이십니다. -L/usr/X11R6/lib <-- 라이브러리가 위치한 디렉토리 정의
-lX11 <--- 사용하는 라이브러리 이름
1. (PROGRAM) $(OBJS) $(LIBS)
2. $(LD) $(OBJS) $(LIBS) -o $(PROGRAM) $(LDFLAGS)
2번 부터 보지요. 이것을 번역하면
cc xx.o 라이브러리들 -o 프로그램이름 등등
을 컴파일 해서 오브젝트 코드를 만들고
1번에서 이것들을 이용해 한개의 실행 파일(pedaling.out)을 만들라..
뭐 이런뜻인것 같습니다. 제 생각에는 먼저 Makefile HOW-TO를 보시는게 더 도움이 되실것 같습니다.
즐거운 하루 되세요.
KLDP에 좋은 강좌 있습니다.
저같은 초보자도 쉽게 이해한 글입니다.
http://kldp.org/KoreanDoc/html/GNU-Make/GNU-Make.html
감사합니다..
요놈들 해석하려구 make책사놓구 보고있는데.. 설명이 좀 어렵더라구요..
마지막 방법으로 여기 올려놨는데 친절한 답변 감사드립니다..
앞으로는 공부열심히 해서 이런 기초적인거 질문 안하도록 하겠습니다..
감사합니다.
댓글 달기