오류 만들기 : 구분 기호 누락
다음과 같은 오류가 발생합니다 make
.
Makefile:168: *** missing separator. Stop.
이 원인은 무엇입니까?
온라인 매뉴얼에 표시된대로 해당 오류의 가장 일반적인 원인은 make
탭 문자를 예상 할 때 줄에 공백이 들여 쓰기 때문입니다 .
옳은
표적: \ tcmd
\t
탭이 어디 있어요
잘못된
표적: ____cmd
_
단일 공간이 어디에 있습니까 ?
미소를 위해, 그리고 다른 누군가가 비슷한 오류가 발생하는 경우 :
함수를 정의하는 규칙을 호출했기 때문에 악명 높은 "missing separator"오류가 발생했습니다.
($eval $(call function,args))
오히려
$(eval $(call function,args))
즉 ($eval $(call...
오히려 $(eval $(call...
.
이것은 Makefile의 구문 오류입니다. 파일 자체 또는 관련 부분을 보지 않고는 그보다 더 구체적이기는 매우 어렵습니다.
내 오류는 여러 줄 확장명이있는 변수 선언 줄에있었습니다. "\"다음에 후행 공백이있어서 유효하지 않은 줄 연속이되었습니다.
MY_VAR = \
val1 \ <-- 0x20 there caused the error.
val2
나에게 문제는 여러 줄 변수 정의에 줄 끝 # ...
주석이 포함되어 있다는 것 define ... endef
입니다. 주석을 제거하면 문제가 해결되었습니다.
내 경우에는 다음에 오류가 발생했습니다. 전 세계적으로, 즉 대상 외부에서 명령을 실행하려고했습니다.
UPD. 명령을 전체적으로 실행하려면 올바르게 구성해야합니다. 예를 들어 명령
ln -sf ../../user/curl/$SRC_NAME ./$SRC_NAME
될 것입니다 :
$(shell ln -sf ../../user/curl/$(SRC_NAME) ./$(SRC_NAME))
필자의 경우 :
에서처럼 콜론 이 누락되어 동일한 오류가 발생 했습니다 staging.deploy:
. 따라서 구문 오류가 쉽게 발생할 수 있습니다.
필자의 경우이 오류는 공간이 부족하여 발생했습니다. 내 makefile에 블록이 있으면 이것을 가지고 있습니다.
if($(METHOD),opt)
CFLAGS=
endif
그것은 있어야했다 :
if ($(METHOD),opt)
CFLAGS=
endif
if 뒤에 공백이 있습니다.
그래서 분명히, 필요한 모든 나는 "빌드 - 필수"패키지, 다음 실행했다 autoconf
을 만든 첫 번째, Makefile.pre.in
다음, ./configure
다음 make
완벽하게 작동하는 ...
다음 Makefile 코드가 작동했습니다.
obj-m = hello.o
all:
$(MAKE) -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
clean:
$(MAKE) -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
참고 URL : https://stackoverflow.com/questions/920413/make-error-missing-separator
'Programming' 카테고리의 다른 글
Git의 저자와 커미터의 차이점은 무엇입니까? (0) | 2020.05.06 |
---|---|
Git에서 루트 커밋 앞에 커밋을 삽입 하시겠습니까? (0) | 2020.05.05 |
설치된 판다 버전을 찾는 방법 (0) | 2020.05.05 |
리소스를로드하지 못했습니다 : net :: ERR_INSECURE_RESPONSE (0) | 2020.05.05 |
AngularJS에서 경로 변경을 감시하는 방법? (0) | 2020.05.05 |