2016-10-03 3 views
0

콘솔을 사용하여 빌드 할 때 보이지 않는 makefile로 프로젝트를 빌드 할 때 컴파일 오류가 발생합니다.makefile을 사용하여 코드를 컴파일 할 때 오류가 발생합니다. 콘솔을 사용하여 작동

PowerPC 용으로 사전 제작 된 GNU 툴체인을 사용하고 있습니다.

다음

내 메이크는, 내가이 명령을 사용하여 빌드 할 때이 오류없이 빌드

GCC_Assembler = powerpc-eabi-as 
GCC_Compiler = powerpc-eabi-gcc 

Directory_Application :=$(argument)/Source_Files 
Directory_Bootloader :=$(argument)/Source_Files 
Directory_RAMBootloader :=$(argument)/Source_Files 

Application_Source_Files := $(wildcard $(Directory_Application)/*.C) 
Application_Source_Files_Objecs=$(Application_Source_Files:.C=.O) 


default: Build_Application 
all: Build_Application 

Build_Application: $(Application_Source_Files_Objecs) 


$(Application_Source_Files_Objecs) : %.O: %.C 
$(GCC_Compiler) -c $< -o [email protected] -O1 -Wall -Wfatal-errors 

.

CD %WORKSPACE%\Source Files 
powerpc-eabi-gcc debug.c  -c -odebug.o -O1 -Wall -Wfatal-errors 
powerpc-eabi-gcc io.c   -c -oio.o  -O1 -Wall -Wfatal-errors 
... 
... 

그래서 makefile을 사용하여 빌드 할 때 올바르게 선언되지 않은 함수에 대해 오류가 발생합니다.

Error(Makefile)

/Debug.C: infunction 'void display_task_table()': 
/Debug.C:627:18: error: 'task_wait' was not declared in this scope 
task_wait(100*2); 

메이크없이 컴파일 할 때 난 단지 같은 기능에 대한 경고를받을 아래 그림을 참조하십시오.

Warning(Console)

Debug.C: in function 'display_task_table': 
Debug.c:627:3: warning: implicit declaration of function 'task_wait' [- Wimplicit-function-declaration] 
task_wait(100*2); 

내가 적절한 헤더 파일을 포함하여 오류를 수정할 수 있습니다,하지만 난 이유를 알고 싶습니다?

내가

+2

이미지가 아닌 질문 자체에 오류를 게시하십시오. – user657267

+0

'task_await' 함수에 대한 서명이 누락 된 것 같습니다 – BackDoorNoBaby

+0

경고 메시지가 나타나면 makefile이 실패하지 않게하려면 다음 링크를 참조하십시오 : http://stackoverflow.com/questions/2414242/gcc-make- how-to-disable-fail-on-warning – BackDoorNoBaby

답변

1

그럼 다른 것을 포함 할 필요가 있으면 알려 주시기 바랍니다 갖는하지 ++ 메이크 파일로 컴파일 할 때 당신은 .C 확장자를 사용하는, 그래서 컴파일러는 C++ 소스 파일로와 C에서 파일을 해석한다 프로토 타입 오류 (및 C에서 경고 만) 그냥

$(Application_Source_Files_Objecs) : %.o: %.c 

에 선

$(Application_Source_Files_Objecs) : %.O: %.C 

를 다시 작성하고 다시 시도 (그리고 u는하지 않는 것입니다 하지 불꽃)

편집

은, 모든 라인과 동일한 작업을 수행 제발 않는 문자 :)이 농담을했다 ---<의 경우를 구분하지 않는 운영 체제 SE는 .C.O 파일도 .c.o으로 지정해야합니다. 운영체제는 문자의 대소 문자는 신경 쓰지 않지만 make(1)gcc(1)은 문자를 사용합니다.

+0

그걸 고쳤습니다. 고마워. – rajan