>> Delete No. 30293 article
No. makefile에 대해서(고수님들 필독!!!)

등록 2001-05-14 17:31:00 By localhost     조회 3
이름 김하형    

		안녕하세요...
프로젝트를 진행중인데, makefile의 실행내용을 - 정확하게는 Java Micro Edition의 리눅스용 CVM
포팅용 makefile입니다. - 분석해야될 처지에 놓였습니다.
HowTo문서나 여러 서적을 찾아봤지만 기본적인 내용들만 나와있고, 실제 소스를 보니
나와있지 않은 내용들이 많아서 이해가 안됩니다. -_-;;
내용은 길지만 아시는 분이라면 정말 간단한 문제일거라고 확신합니다.
웬만큼 리눅스를 사용하시는 분들도 makefile은 고개를 흔들어서 어렵게 글을 올립니다.
정 답변이 힘들다고 생각되시면 해결할 수 있는 방법이라도 좀 알려주세요 ㅠㅠ
읽어 주시는 것만으로도 감사드립니다. 하지만 꼭! 꼭! 꼭! 부탁(애걸~~ 두손모아... )드립니
다. 모르는 부분은 다음과 같습니다.
 1)
J2ME_BUILD_RELEASE = $(subst _,.,1_0)
  위 문장에서 subst는 makefile에 정의되어 있는건지, 쉘 함수인지...
  실행내용을 알려주세요. 대충 1.0일거라고 짐작했지만 확실히 하기 위해서...
2)
CVM_NO_CODE_COMPACTION_CLEANUP  _ACTION =
          rm -rf $(CVM_ROMJAVA_CPATTERN)*
 CVM_REFLECT_CLEANUP_ACTION =
            $(CVM_JAVAC_DEBUG_CLEANUP_ACTIO  N)
            CDCFOUNDATION/build/linux/obj/jn  i_impl.o
CDCFOUNDATION/build/linux/obj/jvm  .o  CDCFOUNDATION/build/linux/obj/refl  ect.o
          $(CVM_ROMJAVA_CPATTERN)*
  위 소스에서 *가 의미하는게 무엇인가요?
3)
ASM_RULE = $(AT)gcc -traditional -D_ASM $(CPPFLAGS) -c -o $@ $<
CC_RULE  = $(AT)gcc $(CFLAGS) -o $@ $<
CC_RULE_FP = $(AT)gcc $(CFLAGS_FP) -o $@ $<
LINK_RULE = $(AT)gcc  $(LINKFLAGS) -g -o $@ $^ $(LINKLIBS)
LIB_RULE  = $(AT)$(LIB) $(LIB_FLAGS) -g -o $@ $^
 가장 이해하기 힘든 부분입니다. AT=@라고 매크로가 정의되어 있는데 명령행에서 @가 앞에
오면 어 떻게 되는건지... 궁금하구요, $@,$<는 알겠는데, $^은 설명이 없습니다. $^에 대해서 
알려주세요.  4)
CDCFOUNDATION/build/linux/foundatio  n_classes/%.class:
$(CVM_CLDCCLASSES_SRCDIR)/%.java
          @echo $? >>.libclasses.list
          @touch .libclasses
또 아주 힘든 부분입니다. %가 의미하는게 무엇인지...
또 $? >>가 무엇을 의미하는지 좀 알려주세요.
 5) 계속 연속되는 내용입니다. 중간중간에 질문...
files := $(foreach file, $(wildcard CDCFOUNDATION/build/linux/obj/*.d), $(file))
    ### :=가 어떻게 하라는 건지...  foreach file도 메크로로 정의되어 있지 않습니다. 알려주
세요. ifneq ($(strip $(files)),)  ###strip은 무슨 함수인가요...??? 
  include $(files)
endif
  vpath %.c      $(CVM_SRCDIRS)
vpath %.S      $(CVM_SRCDIRS)
vpath %.java  $(CVM_SRCJAVA_PATH) $(CVM_SRCTESTJAVA_PATH)
###위 문장은 메크로도 아니고 그렇다고 명령행 같지도 않고 무엇인지요...???
 CDCFOUNDATION/build/linux/generated/  empty.mk:  $(CVM_SRCDIRS)
          touch  CDCFOUNDATION/build/linux/generated/e  mpty.mk
include  CDCFOUNDATION/build/linux/generated/em  pty.mk
 checkflags:: CDCFOUNDATION/build/linux/generated $(CVM_FLAGS)
    ### '::'은 무엇인가요?
 6)
CVM_GENERATE_OFFSETS            = 
$(patsubst %,-extraHeaders CVMOffsets %,$(CVM_OFFSETS_CLASSES))
patsubst %는 무엇을 의미하나요???
 7)
CDCFOUNDATION/build/linux/obj/$(CVM_ROM  JAVA_O): $(CVM_ROMJAVA_LIST)
          @for NAME in `cat $(CVM_ROMJAVA_LIST)` ; do 
                      target=`basename $${NAME} .c`.o ;
                        object=CDCFOUNDATION/build/linux/obj/$${  target} ;
                      echo ... $$target ;
                      $(CC) $(CFLAGS) -o $$object $${NAME} ;
                      namelist="$${namelist} $${object}" ;
          done;
          echo Linking $@ ;
          echo $(AR) $(AR_CREATE_FLAGS) $@ $${namelist} ;
          $(AR) $(AR_CREATE_FLAGS) $@ $${namelist} ;
          echo $(AR) $(AR_UPDATE_FLAGS) $@ ;
          $(AR) $(AR_UPDATE_FLAGS) $@
' xxx ' 에서 ' ' 는 어떤 용도인가요?
$$target에서 $$는 무엇인가요?
$${object}에서 $${}는 무엇인가요?
 8)
CDCFOUNDATION/build/linux/obj/s_rint.o:
CDCFOUNDATION/src/share/native/java/lang/  fdlibm/src/s_rint.c
          @echo "... $@"
          $(CC_RULE)
           @$(CC) $(CCDEPEND) $(CPPFLAGS) $< 2> /dev/null |
          sed 's!$*.o!$(dir $@)&!g' > $(@:.o=.d)
 마지막 두줄에서 2> 는 무엇일까요?
마지막 줄에서 !는 우엇인가요... 그리고 @:,o=.d가 의미하는건 무엇일까요?
[관리자] 패스워드를 입력 하십시오. 답장이 존재하면 함께 삭제됩니다.[ 목록 | 이전 ]
패스워드:    

Copyleft 1999-2026 by JSBoard Open Project
Theme Designed by IDOO All right reserved