在Powershell / CMD中运行make会产生错误2

时间:2019-06-05 18:11:04

标签: c makefile

更新:制表错误已得到修复。 因此,我将更改此问题的范围以将焦点放在错误2上。由于存在一些有价值的讨论,因此我希望保留同一篇文章。

我正在尝试在Windows上运行此Makefile,但出现错误“缺少分隔符”。我做了一些谷歌搜索,似乎此问题源于使用空格而不是制表符。我在notepad ++中打开了文件,似乎所有选项卡都正确放置了。是否还有另一个语法问题会引发此错误?应该注意的是,这在Ubuntu 18.04上可以很好地编译,因此我不确定是什么问题。

此处的代码:

#  where the executables should be installed:
BIN = $HOME/bin

# define your compiler here:
CC = gcc

# define your copy command here:
COPY = cp

# define your remove (or delete) command here:
RM = rm -f

# suffix of object files?  (o for unix, obj for MSDOS):
O = o

# suffix for executable files? (empty for unix, .exe for dos):
E =

# command line arguments for C compiler
WARN := \
 -Wall \
 -Wcast-align \
 -Wcast-qual \
 -Wmissing-declarations \
 -Wmissing-prototypes \
 -Wpointer-arith \
 -Wstrict-prototypes \
 -Wno-unused-parameter \
 -Wno-unused-function \
 -Wshadow \
 -Wundef \
 -Wwrite-strings
OPT1 = -DNDEBUG
#OPT2 = -O
CFLAGS = -g $(WARN) $(OPT1) $(OPT2)

#
# There should be no need to make changes below this line
#
TARGETS = abcml$(E) abcsim$(E) tabcfg$(E) mau2cfg$(E) cplcfg$(E) gnaw$(E) \
  wgtcfg$(E)

#make all targets
all : $(TARGETS)
    touch all

#target wgtcfg: Weight the configurations in a .cfg file
WGTCFG = wgtcfg.$(O) getcic.$(O) io.$(O) header.$(O) misc.$(O) zeroin.$(O)
wgtcfg$(E) : $(WGTCFG)
    $(CC) $(CFLAGS) -o $@ $(WGTCFG) -lm

#target gnaw: subject an assemblage to attrition
GNAW = gnaw.$(O)  getcic.$(O) io.$(O) header.$(O) misc.$(O) zeroin.$(O) \
  unirand.$(O)
gnaw$(E) : $(GNAW)
    $(CC) $(CFLAGS) -o $@ $(GNAW) -lm

#target cplcfg: Calculate complement of .cfg file
CPLCFG = cplcfg.$(O) getcic.$(O) io.$(O) header.$(O) misc.$(O) zeroin.$(O)
cplcfg$(E) : $(CPLCFG)
    $(CC) $(CFLAGS) -o $@ $(CPLCFG) -lm

#target mau2cfg: convert .mau format to .cfg format
MAU2CFG = mau2cfg.$(O) getcic.$(O) misc.$(O) io.$(O) header.$(O) zeroin.$(O)
mau2cfg$(E) : $(MAU2CFG)
    $(CC) $(CFLAGS) -o $@ $(MAU2CFG) -lm

#target abcsim: simulation program
ABCSIM = abcsim.$(O) getcic.$(O) zeroin.$(O) misc.$(O) io.$(O) unirand.$(O) \
  header.$(O)
abcsim$(E) : $(ABCSIM) 
    $(CC) $(CFLAGS) -o $@ $(ABCSIM) -lm

#target abcml: estimation program
ABCML = abcml.$(O) io.$(O) getcic.$(O) zeroin.$(O) misc.$(O) likelihood.$(O) \
  prlike.$(O) chol.$(O) amoeba.$(O)  symeig.$(O) unirand.$(O) header.$(O) \
  ninfomat.$(O)
abcml$(E) : $(ABCML) 
    $(CC) $(CFLAGS) -o $@ $(ABCML) -lm

#target tabcfg: tabulate configurations
TABCFG = tabcfg.$(O) getcic.$(O) misc.$(O) io.$(O) header.$(O) zeroin.$(O)
tabcfg$(E) : $(TABCFG) 
    $(CC) $(CFLAGS) -o $@ $(TABCFG) -lm

install : all
    $(COPY) $(TARGETS) $(BIN)

clean : 
    $(RM) *.$(O) *~ all bone junk* core abcmlsrc.zip try depend $(TARGETS)

abcmlsrc.zip :
    zip -l abcmlsrc LICENSE Makefile.dos Makefile.unix *.c *.h -x try.*

depend :
    echo '#Automatically generated dependency info' > depend
    $(CC) -M *.c >> depend

include depend

编辑:好的,因此,修复依赖文件中的错误会导致另一个奇妙的错误,如下图所示(普通话指出: “该系统找不到指定的文件”)。现在,修复依赖文件可以使其使用WSL正确编译,但是PowerShell仍然不满意。我应该尝试使用其他编译器吗?我的目标是从运行make来获取可执行文件,以便我可以对其进行处理。

gcc -g -Wall -Wcast-align -Wcast-qual -Wmissing-declarations -Wmissing-prototypes -Wpointer-arith -Wstrict-prototypes -Wno-unused-parameter -Wno-unused-function -Wshadow -Wundef -Wwrite-strings -DNDEBUG    -c -o wgtcfg.o wgtcfg.c
process_begin: CreateProcess(NULL, gcc -g -Wall -Wcast-align -Wcast-qual -Wmissing-declarations -Wmissing-prototypes -Wpointer-arith -Wstrict-prototypes -Wno-unused-parameter -Wno-unused-function -Wshadow -Wundef -Wwrite-strings -DNDEBUG -c -o wgtcfg.o wgtcfg.c, ...) failed.
make (e=2): 系统找不到指定的文件。
make: *** [<builtin>: wgtcfg.o] Error 2

0 个答案:

没有答案