2013-12-13 2 views
0

Так что я могу скомпилировать мой код (fftw_ex.c) непосредственно с:Makefile for fftw3?

login$ gcc -o -g fftw_ex fftw_ex.c -I$TACC_FFTW3_INC -L$TACC_FFTW3_LIB -lfftw3 

Однако, мой профессор предпочитает, что мы используем Makefile. Я просто изучаю, как использовать Makefile и делать, и у меня возникли проблемы с созданием 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 [email protected] $^ 

    %.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

1) Чтобы решить: Нет правила, чтобы сделать цель `% (SRC)» заменить% (SRC) в OBJ:. = $ (Patsubst% .c,% о,% (SRC)) с $ (SRC)

2) В строке: $ (CC) $ (LDFLAGS) $ (LDLIBS) -о -g $ @ $^

у вас есть ошибка: -o -g, должно быть - g -o

+0

Спасибо, он в основном исправлен. Хотя теперь я получаю сообщение об ошибке, что -lfftw3 не может быть найден. Но он скомпилировался перед сразу просто отлично. –

Смежные вопросы