M2 Mac通过brew安装fftw3后编译提示‘library 'fftw3' not found’的问题求助
M2 Mac通过brew安装fftw3后编译提示‘library 'fftw3' not found’的问题求助
求助各位!我在M2芯片的MacBook上用Homebrew装了fftw3,IDE里写#include <fftw3.h>完全没问题,连自动补全fftw的常量、函数都正常,本来以为安装稳了,结果编译一段超简单的测试代码时,一直报错说找不到fftw3库,心态有点崩...
我的测试代码是这样的:
#include <stdio.h> #include <fftw3.h> int main(void) { fftw_complex* P = fftw_malloc(1); printf("测试FFTW内存分配\n"); fftw_free(P); return 0; }
有没有遇到过同样问题的朋友,能给我支个招吗?
可能的解决思路:
- 核心原因是M系列Mac的Homebrew默认安装路径是
/opt/homebrew,和老款Intel Mac的/usr/local不一样,编译器默认找不到这个路径下的库,所以得手动指定:- 用gcc编译的话,直接用这条命令:
gcc -o test_fftw test_fftw.c -I/opt/homebrew/include -L/opt/homebrew/lib -lfftw3 - 用clang编译的话,命令类似:
clang -o test_fftw test_fftw.c -I/opt/homebrew/include -L/opt/homebrew/lib -lfftw3
-I指定头文件路径,-L指定库文件路径,-lfftw3就是告诉编译器要链接fftw3库。 - 用gcc编译的话,直接用这条命令:
- 要是嫌每次编译都输这么长麻烦,可以把路径加到环境变量里:
- 打开
~/.zshrc(M2 Mac默认用zsh,要是你用bash就改~/.bash_profile),加上两行:export C_INCLUDE_PATH="/opt/homebrew/include:$C_INCLUDE_PATH" export LIBRARY_PATH="/opt/homebrew/lib:$LIBRARY_PATH" - 执行
source ~/.zshrc让配置生效,之后编译就可以简化成:gcc -o test_fftw test_fftw.c -lfftw3
- 打开
- 另外,如果你装了fftw3的其他变体(比如单精度版本
fftw3-single),记得链接对应的库,比如单精度用-lfftw3f,长双精度用-lfftw3l。
内容来源于stack exchange
相关产品推荐
相关产品推荐

