gpt4 book ai didi

c -/usr/bin/ld 找不到 -lfftw3?

转载 作者:太空宇宙 更新时间:2023-11-04 07:22:25 24 4
gpt4 key购买 nike

所以我使用的是 FFTW 3.3.3。在尝试从 Makefile 调用 make 时,我遇到了这个问题:

    /usr/bin/ld: cannot find -lfftw3
collect2: ld returned 1 exit status
make: *** [fftw_ex] Error 1

我之前直接编译我的代码:

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

而且效果很好。这是我的 Makefile,以备不时之需:

    #                     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

如有任何帮助,我们将不胜感激!

最佳答案

运行 make 应该会向您显示它运行的命令,因此您可以将其与您手动运行的命令进行比较。但是这个

  $(CC) $(LDFLAGS) $(LDLIBS) -g -o $@ $^

应该让要链接的库出现在要编译的文件之后:

   $(CC) -g -o $@ $^ $(LDFLAGS) $(LDLIBS) 

您不能在 makefile 中为 shell 变量使用 $VARIABLE_NAME,makefile 中的语法是 $(VARIABLE_NAME),所以

CFLAGS := -O3 -I$(TACC_FFTW3_INC)
LDFLAGS := -L$(TACC_FFTW3_LIB)

确保 TACC_FFTW3_LIB 和 TACC_FFTW3_INC 是 exported也来自外壳。(注意你拼错了TACC_FFTW3_LI)

关于c -/usr/bin/ld 找不到 -lfftw3?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20579114/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com