запуск make в Powershell / CMD выдает ошибку 2 - PullRequest
0 голосов
/ 05 июня 2019

ОБНОВЛЕНИЕ: ошибка табуляции была исправлена.поэтому я изменяю сферу действия этой проблемы, чтобы сосредоточиться на ошибке 2. Я хотел бы оставить этот же пост, поскольку там было несколько ценных обсуждений.

Я пытаюсь запустить этот Makefile в Windows, но выдает ошибку «отсутствует разделитель».Я немного погуглил, и похоже, что эта проблема связана с наличием пробелов вместо табуляции.Я открыл файл в 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...