makefileを使用してファイルをコンパイルしようとしていますが、何らかの理由で次/bin/sh
のエラーが発生します。
nvc FLAGS(LDFLAGS) black_scholes.o gaussian.o main.o parser.o random.o dcmt0.4/lib/random_seed.o timer.o util.o -o hw1.x
/bin/sh: -c: line 0: syntax error near unexpected token `('
/bin/sh: -c: line 0: `nvc FLAGS(LDFLAGS) black_scholes.o gaussian.o main.o parser.o random.o dcmt0.4/lib/random_seed.o timer.o util.o -o hw1.x'
make: *** [Makefile:16: hw1.x] Error 1
私のmakefileの内容は次のとおりです。
LDFLAGS += -Ldcmt0.4/lib -ldcmt
include Makefile.include
HW1_INCS = black_scholes.h gaussian.h parser.h random.h timer.h util.h
HW1_C_SRCS = black_scholes.c gaussian.c main.c parser.c random.c dcmt0.4/lib/random_seed.c timer.c util.c
HW1_C_OBJS = $(HW1_C_SRCS:.c=.o)
HW1_EXE = hw1.x
all: hw1.x
%.o: %.c
$(CC) -c $(CCFLAGS) $(ACCFLAGS) $< -o $@
hw1.x: $(HW1_C_OBJS) dcmt0.4/lib/libdcmt.a
$(CC) $LFLAGS$ (LDFLAGS) $(HW1_C_OBJS) -o $@
dcmt0.4/lib/libdcmt.a:
make -C dcmt0.4/lib
black_scholes.o: black_scholes.c black_scholes.h gaussian.h random.h util.h
gaussian.o: gaussian.c gaussian.h util.h
main.o: main.c black_scholes.h parser.h random.h timer.h
parser.o: parser.c parser.h
random.o: random.c random.h
dcmt0.4/lib/random_seed.o: dcmt0.4/lib/random_seed.c
timer.o: timer.c timer.h
util.o: util.c util.h
clean:
make -C dcmt0.4/lib clean
rm -f $(HW1_C_OBJS) $(HW1_EXE)
これは私のmakefile.includeの内容です。
CC = nvc
LINKER = nvc
LDFLAGS = -lm
通常、makefileのエラーは、それ以外のエラーがあることを示しているため、エラーがどこにあるかは本当に理解していません。/bin/sh
エラーを理解したり修正したりしていただきありがとうございます。
答え1
エラーは次の行にあります。
$(CC) $LFLAGS$ (LDFLAGS) $(HW1_C_OBJS) -o $@
$LFLAGS
$L
後ろにFLAGS
;が来ると解釈され(名前が単一の空白である変数の値)、後に続くと解釈$ (LDFLAGS)
されます。これがまさに出力を得る理由です。$
(LDFLAGS)
FLAGS(LDFLAGS)
問題を解決するには、以下を使用してください。
$(CC) $(LDFLAGS) $(HW1_C_OBJS) -o $@