2011-08-24 3 views
3

cube.c은 폴더 큐브에 저장됩니다. makefile은 다음과 같습니다.메이크 파일에서 확장이 무시됩니까?

LDFLAGS=-lglut -lGLU 

all: cube 

다음 질문을 해결할 수있는 사람이 있습니까?

  • cube은 cube.c를 의미합니까? cube에 확장자가없는 이유는 무엇입니까 .c?

  • all: cube 다음에 명령이없고 LDFLAGES이 사용되지 않습니다. 이런 식으로 왜 쓸 수 있습니까?

답변

1

큐브는 cube.c를 의미합니까? 왜 큐브에는 .c 확장자가 없습니까?

결과 실행 파일의 이름입니다.

줄 다음에 명령이 없습니다. 큐브 : LDFLAGES는 이 아닙니다.

LDFLAGS는 (링커 실행 아니요 자동으로 이루어진다 형태 $(CC) $(CPPFLAGS) $(CFLAGS) -c

  • N의 레시피

    • 없음 NC로부터 자동적으로 이루어진다 묵시적 규칙에 사용 보통
      (ld)를 C 컴파일러를 통해 호출합니다. $(CC) $(LDFLAGS) n.o $(LOADLIBES) $(LDLIBS)

    implicit rules를 참조하십시오 사용 된 정확한 조리법이다.

  • +0

    어디서 이러한 암시 적 규칙을 찾을 수 있습니까? 나는 튜토리얼을 읽었지만 모두 명시적인 명령을 사용한다. – Sean

    +0

    http://www.gnu.org/software/make/manual/html_node/Catalogue-of-Rules.html#Catalogue-of-Rules – user885074

    1

    cube은 실행 파일 자체입니다. make에는 파일 .o (CFLAGS)을 사용하고 .o 파일 (LDFLAGS 사용)을 실행 파일에 연결하기위한 .c 파일을 컴파일하는 규칙이 내장되어있을 가능성이 높습니다. 따라서 LDFLAGS을 제공하고 make에 적어도 하나의 목표를 부여하고 그 목표는 일반적으로 all라고합니다.

    http://www.gnu.org/s/hello/manual/make/Implicit-Rules.html :

    CC=cc 
    CFLAGS= 
    LDFLAGS=-lglut -lGLU 
    
    all: cube 
    
    cube: cube.o 
        $(CC) $(LDFLAGS) cube cube.o 
    
    cube.o: cube.c 
        $(CC) $(CFLAGS) -c cube.c 
    

    는 GNU이 설명서에는 묵시적 규칙에 대한 섹션이 있는지 확인 : 사용자가 명시 적으로 make 추론 할 수있는 규칙을 작성하는 경우,이 같은이있을 것이다

    관련 문제