Des erreurs dans le fichier make : *** absence de séparateur. Arrêter
Je suis confronté à des erreurs dans le fichier de créer dans CentOS 6.02 64 bits. J'ai besoin de savoir ce qui doit être fait pour rendre le makefile réalisable. Toute suggestion sera grandement utile. Mon fichier de créer est collé ci-dessous: -
#
.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
.c.o:
$(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
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)
Et l'erreur résultante est:
Makefile:34: *** missing separator. Stop.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez trouver une explication de cette erreur dans L'annexe B Erreurs Générées par Faire de la.
Chaque ligne dans une recette doit commencer par un caractère de tabulation. Les recettes de départ avec
$(C++)
et$(CC)
près du haut de votre fichier ne semblent pas commencer par un caractère de tabulation.En outre, la section
semble manquer une barre oblique inverse après
sys
et que même section (et beaucoup plus) ont superflu des lignes vides.remake -x
est généralement utile de trouver de telles erreurs...-I./usr/include/sys
semble manquer une barre oblique et d'autres ont une barre oblique inverse supplémentaireOuvrir votre fichier dans vim plutôt que des éditeurs comme gedit. Chaque ligne dans une recette doit commencer par un caractère de tabulation.
.RECIPEPREFIX
à une valeur différente. Bien sûr, personne ne va comprendre la façon de traiter avec votremakefile
plus, mais vous venez de les forcer à lire la documentation :-).Cette réponse, c'est pour les autres
Make
débutants tels que moi qui trouve cette question à partir d'une recherche sur Google et de se coincer parce qu'ils sont en train de modifier un grand pré-existant Makefile, sans les lignes commençant par un caractère espace. Mon problème est survenu parce que un makefile dans un sous-répertoire avec des espaces à la place des onglets a été appelé par un parent makefile, où j'ai tort pensé que le problème existe.Une fois j'ai corrigé le fichier makefile dans le répertoire, tout a fonctionné comme un charme.