So I am using FFTW 3.3.3. While trying to invoke make from the Makefile, I encounter this problem:
/usr/bin/ld: cannot find -lfftw3
collect2: ld returned 1 exit status
make: *** [fftw_ex] Error 1
I previously compiled my code directly with:
gcc -o fftw_ex fftw_ex.c -I$TACC_FFTW3_INC -L$TACC_FFTW3_LIB -lfftw3
and it worked just fine. Here is my Makefile, in case it's needed:
# RULES
EXEC := fftw_ex
SRC := $(wildcard *.c)
OBJ := $(SRC)
# OPERATIONS
CC := gcc
CFLAGS := -O3 -I$TACC_FFTW3_INC
LDFLAGS := -L$TACC_FFTW3_LI
LDLIBS := -lfftw3
$(EXEC): $(OBJ)
$(CC) $(LDFLAGS) $(LDLIBS) -g -o $@ $^
%.o: %.c
$(CC) $(CFLAGS) -c $<
# PHONY TARGETS
.PHONY: clean
clean:
@echo Cleaning...;rm -rf *.o fftw_ex
Any help would be greatly appreciated!
Running make should show you the commands it runs, so you can compare that to the command you run by hand. But this
Should rather make the libraries to link in come after the files to compile:
You can't use $VARIABLE_NAME in a makefile for shell variables, the syntax in a makefile is $(VARIABLE_NAME), so
Make sure the TACC_FFTW3_LIB and TACC_FFTW3_INC are exported from the shell too. (Note that you spelled TACC_FFTW3_LI wrong)