所以我可以直接编译我的代码(fftw_ex.c):
login$ gcc -o -g fftw_ex fftw_ex.c -I$TACC_FFTW3_INC -L$TACC_FFTW3_LIB -lfftw3
然而,我的教授更喜欢我们使用Makefile。我只是学习如何使用Makefile和make,我在创建Makefile时遇到了麻烦。到目前为止,这就是我所拥有的:
# RULES
EXEC := fftw_ex
SRC := $(wildcard *.c)
OBJ := $(patsubst %.c,%.o,%(SRC))
# OPERATIONS
CC := gcc
CFLAGS := -O3 -I$TACC_FFTW3_INC
LDFLAGS := -L$TACC_FFTW3_LIB
LDLIBS := -lfftw3
$(EXEC): $(OBJ)
$(CC) $(LDFLAGS) $(LDLIBS) -o -g $@ $^
%.o: %.c
$(CC) $(CFLAGS) -c $<
# PHONY TARGETS
.PHONY: clean
clean:
@echo Cleaning...;rm -rf *.o fftw_ex
我知道SRC系列存在问题,因为我收到错误消息:
make: *** No rule to make target `%(SRC)', needed by `fftw_ex'. Stop.
任何有助于此工作的帮助将不胜感激。
答案 0 :(得分:0)
1)解决: 没有规则来制作目标`%(SRC)' 替换%(SRC)in OBJ:= $(patsubst%.c,%。o,%(SRC)) 与$(SRC)
2)在线: $(CC)$(LDFLAGS)$(LDLIBS)-o -g $ @ $ ^
你有错误:-o -g,应该是-g -o