Command-Line
嘗試使用 makefile 時在 /bin/sh 中出錯
我正在嘗試使用 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
,任何幫助理解或修復錯誤將不勝感激
錯誤在這一行:
$(CC) $LFLAGS$ (LDFLAGS) $(HW1_C_OBJS) -o $@
$LFLAGS
被解釋為$L
後跟FLAGS
; then$ (LDFLAGS)
被解釋為$
(名稱為單個空格的變數的值)後跟(LDFLAGS)
,這就是您獲得FLAGS(LDFLAGS)
輸出的原因。要修復它,請使用
$(CC) $(LDFLAGS) $(HW1_C_OBJS) -o $@