make文件中的错误:***缺less分隔符。 停止

我在CentOS 6.02 64位中遇到make文件错误。 我需要知道应该如何使makefile可行。 任何build议将会非常有帮助。 我的make文件被粘贴在下面:

# .SUFFIXES: .cc $(.SUFFIXES) ALL = libpal.a #all = $(ALL) all: $(ALL) .cpp.o: $(C++) -o $@ -c $(PROF) $(CFLAGS) $*.cpp .cc.o: $(C++) -o $@ -c $(PROF) $(CFLAGS) $*.cc .co: $(CC) -o $@ -c $(PROF) $(CFLAGS) $*.c top_srcdir = .. OPENSSL_LIB_DIR = ../../ThirdPartyLibs/openssl-0.9.8e/include BOOST_DIR = ../../ThirdPartyLibs/boost/stage/lib BOOST_INCLUDE_DIR = ../../ThirdPartyLibs/boost CC = gcc C++ = g++ CCOPT = -Os -Wall -Wno-deprecated CCOPT_DEBUG = -Wall -g -Wno-deprecated PROF = STATIC = -static INCLUDE = \ -I./usr/include/sys -I./Headers \ -I$(top_srcdir)/PAL/Headers \ -I$(top_srcdir)/BaseMulti/Headers \ -I$(top_srcdir)/NetworkMulti/Headers \ -I$(top_srcdir)/RTP/Headers \ -I$(BOOST_INCLUDE_DIR) \ -I$(OPENSSL_LIB_DIR) \ LIBDIRS = \ -L$(BOOST_DIR) \ #XXX NLAYER define / MB_DEBUG DEFINE = -D_LINUX -DDEBUGLOG -D_INDENT_DB_PRINT -fsigned-char -fno-inline -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS -D_POSIX_PER_PROCESS_TIMER_SOURCE -D_PTHREADS -DUNICODE #-DDISABLE_LOG SHLIB_SUFFIX = .so SHLIB_LD = gcc -shared #The previous line had "gcc" instead of "frv-uclinux-gcc" SHLIB_LD_LIBS = SHLIB_CFLAGS = -fPIC BFLAGS = $(DEFINE) $(INCLUDE) CFLAGS = $(CCOPT) $(BFLAGS) OBJ_C = OBJ_CC = \ ./Sources/PALsystime.o \ ./Sources/PALdebug.o \ ./Sources/PALdebuglog.o \ ./Sources/PALthread.o \ ./Sources/PALcritsec.o \ ./Sources/PALprofiler.o \ ./Sources/PALserializable.o \ ./Sources/PALinet.o \ ./Sources/PALnetwork.o \ ./Sources/PALsocket.o \ ./Sources/PALlocalhostUdpEvent.o \ ./Sources/PALpollarray.o \ ./Sources/PALrandom.o \ OBJS = $(OBJ_C) $(OBJ_CC) SRCS = $(OBJ_C:.o=.c) $(OBJ_CC:.o=.cc) debug: DEFINE += -DDEBUG debug: BFLAGS = $(DEFINE) $(INCLUDE) debug: CFLAGS = $(CCOPT_DEBUG) $(BFLAGS) debug: $(OBJS) ar crsu libpal_debug.a $(OBJS) libpal.a: $(OBJS) ar crsu libpal.a $(OBJS) cleandeps: $(RM) ./Sources/*.o .depend* core clean: cleandeps $(RM) ./libpal.a ./libpal_debug.a $(RM) $(ALL) 

由此产生的错误是:

 Makefile:34: *** missing separator. Stop. 

Solutions Collecting From Web of "make文件中的错误:***缺less分隔符。 停止"

您可以在附录B生成的错误中找到这个错误的解释。

配方中的每一行都必须以制表符开头。 在文件顶部附近以$(C++)$(CC)开头的食谱似乎不是以制表符开始的。

此外,该部分

 INCLUDE = \ -I./usr/include/sys -I./Headers \ 

似乎缺少一个反斜杠之后, sys和相同的部分(和更多)有多余的空行。

在vim中打开你的make文件,而不是像gedit这样的编辑器。 配方中的每一行都必须以制表符开头。

这个答案适用于其他的新手,比如我自己从谷歌搜索中发现这个问题,因为他们修改了一个大的预先存在的Makefile,而没有以空格字符开头的行。 我的问题发生的原因是一个具有空格而不是制表符的子目录中的makefile被一个父级makefile调用,我错误地认为这个问题存在。

一旦我将makefile文件固定在子目录中,一切都像魅力一样。