C 在Makefile中找不到命令错误

C 在Makefile中找不到命令错误,c,linux,gcc,makefile,C,Linux,Gcc,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=

我正在尝试编写一个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
但是,当我在终端中手动运行compile命令时,它可以工作

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

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
时,它工作的原因是shell和Makefile处理引号的规则不同

更常见的约定是对所有编译标志使用
CFLAGS
。事实上,我强烈建议您在
CFLAGS
定义中添加
Wall-W


关于库,您应该在
cc
ld
命令行上的源文件和目标文件之后展开
$LIBS

不要在makefile中加引号。选项应该在
CFLAGS
中,而不是在
cc
中。谢谢您的建议。删除引号有帮助。另外,我链接到库的方式是否正确?在终端中运行
'/buildtools/toolchain/wr-x86/3.0FCScg/bin/i586-wrs-linux-gnu-gcc--sysroot=/buildtools/toolchain/wr-x86/3.0FCScg/sysroot'
时会发生什么?