编译C代码时出现Makefile错误

时间:2017-03-03 08:24:54

标签: c shell makefile

我下载了单线程Linux版本的立体声软件的C源代码。代码的作用是获取输入数据并生成回归树模型。

使用Ubuntu终端编译源代码时,它生成了Executable文件,但没有输出错误 这是makefile

CC  = gcc -ffloat-store
OFLAGS = -O3
CFLAGS = -DVerbOpt -g -Wall -O0
LFLAGS = $(S)
SHELL  = /bin/csh
src =\
    global.c\
    xval.c\
    cubist.c\
    sort.c\
    construct.c\
    predict.c\
    stats.c\
    discr.c\
    rules.c\
    contin.c\
    formrules.c\
    formtree.c\
    getdata.c\
    getnames.c\
    implicitatt.c\
    instance.c\
    modelfiles.c\
    prunetree.c\
    regress.c\
    trees.c\
    update.c\
    utility.c

obj =\
     global.o cubist.o construct.o\
     formtree.o prunetree.o stats.o discr.o contin.o\
     trees.o\
     formrules.o rules.o\
     instance.o\
     predict.o\
     regress.o\
     xval.o\
     getnames.o getdata.o implicitatt.o sort.o\
     modelfiles.o\
     update.o utility.o\

all:
    make cubist
    $(CC) $(LFLAGS) $(OFLAGS) -o summary summary.c -lm


# debug version (including verbosity option)

cubistdbg:\
    $(obj) defns.i extern.i text.i Makefile
    $(CC) $(CFLAGS) -o cubistdbg $(obj) -lm


# production version

cubist:\
    $(src) defns.i text.i Makefile
    cat defns.i $(src)\
        | egrep -v 'defns.i|extern.i' >cubistgt.c
    $(CC) $(LFLAGS) $(OFLAGS) -o cubist cubistgt.c -lm
    strip cubist
    rm cubistgt.c


$(obj):     Makefile defns.i extern.i text.i


.c.o:
    $(CC) $(CFLAGS) -c $<

当我尝试在Windows中执行类似的工作时,我收到了错误消息

$ make all
make cubist
make: /bin/csh: Command not found
make: *** [Makefile:56: all] Error 127

但是当我尝试从Makefile中删除SHELL = / bin / csh时它起作用了。我的问题是它对软件或软件有负面影响 我怎么能解决它删除SHELL = / bin / csh。 非常感谢你

1 个答案:

答案 0 :(得分:1)

我的猜测是,删除行SHELL = /bin/csh即可。

/bin/csh是一个shell(命令行界面,命令处理器,命令提示符),主要用于unix。在您的makefile中,它被定义,但未被引用(未使用) 有时makefile可能需要一个shell(命令处理器)来执行某些任务,但它取决于makefile - 我的意思是,编写makefile的人选择使用或不使用该功能,如果使用,可以(或必须)指定要使用的shell。现在情况并非如此。