2016-08-03 32 views
1

Makefileを書き込もうとしています。これは私が書いたものです。Makefileにコマンドが見つかりませんでした

CC='/buildtools/toolchain/wr-x86/3.0FCScg/bin/i586-wrs-linux-gnu-gcc --sysroot=/buildtools/toolchain/wr-x86/3.0FCScg/sysroot' 
IDIR =../../../include 
CFLAGS=-I$(IDIR) 

LDIR =../../../../../../../../.debug/lib.out/public/ 
LIBS= -lmylib1 -lmylib2 -lmylib3 

myexec: my_code.c 
    $(CC) $(CFLAGS) -o myexec my_code.c 

実行がエラー

make: /buildtools/toolchain/wr-x86/3.0FCScg/bin/i586-wrs-linux-gnu-gcc --sysroot=/buildtools/toolchain/wr-x86/3.0FCScg/sysroot: Command not found 

をスローしたときに、私は、端末に手動でコンパイルコマンドを実行するとき、これはしかし、それは動作します。

export CC='/buildtools/toolchain/wr-x86/3.0FCScg/bin/i586-wrs-linux-gnu-gcc --sysroot=/buildtools/toolchain/wr-x86/3.0FCScg/sysroot' 
$CC -I ../../../include -L ../../../../../../../../.debug/lib.out/public/ -lmylib1 -lmylib2 -lmylib3 -o myexec my_code.c 
+3

メークファイル内に引用符を入れないでください。 – Barmar

+0

オプションは 'CC'ではなく' CFLAGS'になければなりません。 – Barmar

+0

提案していただきありがとうございます。引用符を削除すると助けになりました。また、ライブラリにリンクする方法は正しいですか? –

答えて

3

変更し、これにMakefileで定義:引用符付き

CC=/buildtools/toolchain/wr-x86/3.0FCScg/bin/i586-wrs-linux-gnu-gcc --sysroot=/buildtools/toolchain/wr-x86/3.0FCScg/sysroot 

makeは探すために実行可能ファイルの名前として定義全体を使用しています。

Makefileの外にCCを定義するときに動作する理由は、シェルとMakefileでは引用符を処理するためのルールが異なります。

より一般的な規則は、すべてのコンパイルフラグにCFLAGSを使用することです。事実上、CFLAGSの定義にWall -Wを追加することを強くお勧めします。

ライブラリについては、またはldコマンドラインのソースファイルとオブジェクトファイルの後に、$LIBSを展開する必要があります。

関連する問題