在Mac OS X Mavericks上使用FFTW的问题

4
我相信这是一个简单的问题,但我很难搞定。我使用了来自http://www.fftw.org/fftw2_doc/fftw_2.html的代码片段。我已经安装了库(通过homebrew)。包含文件夹(/usr/local/include)有...
fftw3.f
fftw3.f03
fftw3.h
fftw3l.f03
fftw3q.f03

这是网站上的代码片段。我已经尝试使用fttw.h和fttw3.h两种方式。

#include <fftw.h>

int main (int argc, char** argv){
 fftw_complex in[N], out[N];
 fftw_plan p;

 p = fftw_create_plan(N, FFTW_FORWARD, FFTW_ESTIMATE);

 fftw_one(p, in, out);

 fftw_destroy_plan(p);  

     return 0;
}

它一直在抛出错误。
fftwtest.c:1:10: fatal error: 'fftw3.h' file not found
#include <fftw3.h>
     ^
1 error generated.

2
不是这个错误,而是你接下来会遇到的错误:该代码使用FFTW的旧版本2 API,但你已经安装了当前(向后不兼容)版本。请阅读http://www.fftw.org/fftw3_doc获取更多信息。 - tab
如果您只想在OS X上计算FFT,则已经有可用的Accelerate框架,即除非您希望您的代码跨平台,否则无需使用FFTW。 - Paul R
3个回答

7

/usr/local/include/usr/local/lib在Mavericks操作系统中不再是默认的头文件搜索路径。你需要使用-I-L标志分别将它们添加。


有趣的变化...虽然我也没有注意到旧的行为。 - Jonathan Leffler
我必须在这里更改一些项目的makefile。我不喜欢它,但我不做决定,所以... - Carl Norum
3
你要怎样添加它们? - user906357

3

我最终通过以下步骤在一个终端会话中成功安装了pyfftw:

brew install fftw
export DYLD_LIBRARY_PATH=/usr/local/lib
export LDFLAGS="-L/usr/local/include"
export CFLAGS="-I/usr/local/include"
pip install pyfftw

这个方法对我有用,只需要稍微调整一下:我必须使用 export LDFLAGS="-L/usr/local/lib"(使用 /lib 而不是 /include)。 - Chris Nolet
以下是我在macOS Mojave上安装最新版本的pyFFTW所使用的方法:export LDFLAGS="-L/usr/local/lib"export CFLAGS="-I/usr/local/include"pip install git+git://github.com/pyFFTW/pyFFTW.git - Steve
我必须执行以下操作。export CFLAGS="-I/opt/homebrew/include -Wno-implicit-function-declaration" - user2555515

1
你需要正确的编译器标志。将/usr/local/include添加到您的头文件搜索路径中。这可以通过编译器的-I标志完成,或者如果您使用Xcode,则可以在项目设置中设置它。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接