2016-10-03 60 views
0

我在使用makefile編譯我的項目時遇到了編譯錯誤,而使用控制檯編譯時我沒有看到它。使用makefile編譯代碼時出錯。使用控制檯工作

我爲PowerPC使用了預建的GNU工具鏈。

這裏是我的makefile,

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); 

我只是沒有makefile文件編譯時得到警告相同功能的圖像。

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

好,您正在使用的Makefile編譯時使用.C擴展,所以編譯器解釋文件作爲C++源文件,在C++中,沒有原型是錯誤的(並且只在C警告)只是重寫線

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

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

,然後再試一次(也不要ü瑟不區分字母:) < ---這是個玩笑,情況不熄火,請)

編輯

請,做相同的所有行的操作系統指定.C.O文件也改爲.c.o。操作系統不打擾字符的情況,但make(1)gcc(1)做。

+0

修復了它。非常感謝。 – rajan