2011-03-28 2 views
1

make 유틸리티를 사용하여 많은 파일을 컴파일하려고합니다. 내가 로그 임의의 스레드에서 출력을 보여줍니다 -J 옵션을 사용하고 있기 때문에 실행 사이에서 나는 다음과 같은 오류 여러 번<command-line> : 오류 : makefile에

<command-line>: error: macro names must be identifiers 

를 얻을. 따라서이 오류가 발생한 실제 파일을 판별하기는 매우 어렵습니다. 또한 다른 오류가 나타나지 않습니다. 누군가가 실제로이 오류가 나타내는 것을 알려주시겠습니까?

+0

오류의 원인은 무엇입니까? :) – sarnold

+0

실제로 작업이 병렬로 처리되기 때문에 출력 로그에서 어떤 줄이 발생하는지 파악할 수 없습니다. 메이크 파일의 컨텍스트에서이 오류가 실제로 무엇을 의미하는지 알 수 있다면 내가 왜 나타나는지 알 수 있습니다. – Pein

답변

0

모두 Makefile-j으로 컴파일 할 준비가되지 않았습니다. 때로는 프로젝트가 끝까지 빌드되기 전에 make -j 번을 여러 번 실행해야 할 때도 있습니다. 그리고 오류가 발생하면 언제든지 을 제거하고 언제든지 단일 프로세스로 빌드를 완료 할 수 있습니다. 이것은 뭔가를 디버깅하려고 할 때 예측할 수없는 것들을 줄이는 반면, 컴파일 된 것들 중 일부 (또는 거의 대부분은 운이 좋다면)를 위해 병렬 빌드 작업을 계속 사용합니다.

make(1)에 식별자를 구성하는 항목을 추적하는 데 문제가 있습니다. 그러나 대부분의 언어에서 제한 사항은 일반적으로 다음과 같습니다. "첫 번째 문자는 [a-zA-Z]이어야하며 다른 모든 문자는 [ a-zA-Z0-9_]]. 나는 make(1)의 규칙이 비슷하다고 상상한다.

2

이 메시지는 make의 오류 메시지가 아니고 전 처리기 (make에 의해 호출 됨)의 오류 메시지입니다. 다른 사람이 말했듯이 -j 옵션을 사용하지 않고 make을 실행하십시오 (처음부터 또는 make -j 실패 후) 오류가 어디서 발생했는지 명확하게 볼 수 있습니다.

2

이것은 C 프리 프로세서의 것입니다. 일반적으로 유효하지 않은 기호 또는 기호가없는 gcc에 -D 스위치를 전달할 때 발생합니다.

근본 원인은 아마도 DEBUG가 실제로 어디 정의되어 있지 않은 그런

CFLAGS=-g -D$(DEBUG) 

또는 뭔가처럼 메이크의 라인입니다.

관련 문제