2016-10-03 2 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 
... 
... 

メイクファイルを使用して構築するときに、私が正しく宣言されていない機能のためにエラーが発生します。メイクなしでコンパイルするとき、私は、同じ機能に対して警告を受ける

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

警告でメークファイルが失敗しないようにするには、次のリンクを参照してください: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 

を書き換えて再試行してください(uはないですこれは冗談だった、ないない炎、してください)

EDIT

は --- < :)文字の大文字と小文字を区別しないオペレーティングシステムをしてくださいSE、すべての行で同じことを行います.C.Oファイルを指定すると、代わりに.c.oになります。オペレーティングシステムは文字の大文字小文字ではなく、make(1)gcc(1)です。

+0

それを修正しました。どうもありがとう。 – rajan

関連する問題