대상을 쓰는 방법이 있습니까GNUmake에서 대상을 작성하여 * .o 파일 만 만드는 방법
1) 오브젝트 파일 만 만드시겠습니까?
2) 개체 파일을 연결하고 이진 파일을 만들 때만 사용할 수 있습니까?
2 단계로 내 바이너리 파일을 만들 수 있습니다.
대상을 쓰는 방법이 있습니까GNUmake에서 대상을 작성하여 * .o 파일 만 만드는 방법
1) 오브젝트 파일 만 만드시겠습니까?
2) 개체 파일을 연결하고 이진 파일을 만들 때만 사용할 수 있습니까?
2 단계로 내 바이너리 파일을 만들 수 있습니다.
해당 사항은 implicit rule입니다. 당신은 단지 오브젝트 파일을 원하는 경우에 당신은 단지 실행해야
CC=cc -g
all: client
client: client.c
$(CC) client.c -o client
clean:
-rm -f client
:
$ make client.o
을 그리고 당신은 오브젝트 파일을 얻을 것이다의는 다음 메이크 있다고 가정 해 봅시다.
%.o: %.c
$(CC) -c $<
이전 규칙 객체 (.o
) 파일에 대한 .c
파일에서 구축하는 규칙이다 : 그러나, 당신은 또한 같은 명시 적 규칙을 작성할 수 있습니다. $<
은 규칙이 의존하는 파일의 이름을 얻는 데 도움이됩니다. 여러 오브젝트 파일이있는 경우
, 당신은 다음 변수를 정의 할 수 있습니다 :이 경우
objects = client.o foo.o bar.o
client: $(objects)
$(cc) -o [email protected] $(objects)
$(objects): config.h
clean:
-rm -f client $(objects)
를 objects
은 컴파일 할 오브젝트 파일과 관련된 변수입니다. 종속성 및 링크를위한 인수로 client
에 사용되며 헤더 파일 (이 예에서는 config.h
)에 종속 된 규칙을 정의하는 데 사용되며 finalle은 clean
규칙에서 사용되어 모든 규칙을 시작합니다 다시.
[email protected]
은 규칙 이름 대신 사용됩니다. 마지막 경우에는 client
이됩니다.
manual of GNU Make에는 학습 과정을 이해해야하는 많은 예제가 포함되어 있습니다.
이것은 "링크 부분 만"입니다. 말할 필요도없이 작동하지 않습니다. 내가 뭘 잘못하고 있는지 알아? – usustarr
오류 메시지없이 작업하고있는 Makefile 없이는 말하기 어렵습니다. – gpoo