/ bin / sh:语法错误:文件结束意外

时间:2013-01-29 00:24:01

标签: linux makefile

使用make -f makefile2 install运行以下makefile时出错(除了安装,其余的工作正常):

all:myapp

#which compiler
CC = gcc

#Where to install
INSTDIR = /usr/local/bin

#where are include files kept
INCLUDE = .

#Options for development
CFLAGS = -g -Wall -ansi

#Options for release
# CFLAGS = -O -Wall -ansi

myapp: main.o 2.o 3.o
    $(CC) -o myapp main.o 2.o 3.o

main.o: main.c a.h
    $(CC) -I$(INCLUDE) $(CFLAGS) -c main.c

2.o: 2.c a.h b.h
    $(CC) -I$(INCLUDE) $(CFLAGS) -c 2.c

3.o: 3.c b.h c.h
    $(CC) -I$(INCLUDE) $(CFLAGS) -c 3.c         

clean:
    -rm main.o 2.o 3.o

install: myapp
    @if [ -d $(INSTDIR) ]; \
      then \
      cp myapp $(INSTDIR);\
      chmod a+x $(INSTDIR)/myapp;\
      chmod og-w $(INSTDIR)/myapp;\
      echo "Installed in $(INSTDIR)";\
    else
      echo "Sorry, $(INSTDIR) does not exist";\
    fi

我收到以下错误:

error /bin/sh: 7: Syntax error: end of file unexpected
make: *** [install] Error 2

根据我的理解,它是makefile的最后几行中的空白/制表/非unix字符问题(安装后:)。但即使尝试删除所有空格并替换为制表符,我也无法正确运行makefile。代码直接来自我正在阅读的编程书,并且是一个例子。任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:9)

您在安装规则下的其他地方缺少尾部斜杠。它应该是:

install: myapp
    @if [ -d $(INSTDIR) ]; \
      then \
      cp myapp $(INSTDIR);\
      chmod a+x $(INSTDIR)/myapp;\
      chmod og-w $(INSTDIR)/myapp;\
      echo "Installed in $(INSTDIR)";\
    else\
      echo "Sorry, $(INSTDIR) does not exist";\
    fi
相关问题