C 中的 FFTW3 链接

FFTW3 linking in C

我不能 link fftw3 库(最新于 Mac OS X Yosemite 10.10.5)。我有来自 developers 的示例代码:

#include <stdio.h>
#include <stdlib.h>
#include </usr/local/include/fftw3.h>


int main()
    {
    int N;

    fftw_complex *in, *out;
    fftw_plan p;


    in = (fftw_complex*) fftw_malloc(sizeof(fftw_complex) * N);
    out = (fftw_complex*) fftw_malloc(sizeof(fftw_complex) * N);
    p = fftw_plan_dft_1d(N, in, out, FFTW_FORWARD, FFTW_ESTIMATE);


    fftw_execute(p); /* repeat as needed */


    fftw_destroy_plan(p);
    fftw_free(in); fftw_free(out);
}

我不认为它有意义。此时我只是为了编译。

1)我已经按照手册尝试了:

gcc -lm -lfftw3 FFT.c -o FFT

gcc FFT.c -I$/usr/local/include/ -L$/usr/local/include/ -lfftw3 -lm -o FFT

和许多其他变体。

2) 当我打开 /usr/local/include/ 时,我并没有真正看到 libfftw3 文件,但是,我在 /Applications/fftw-3.3.7 中有 libfftw3.la。因此,我也试过

gcc FFT.c -I$/Applications/fftw-3.3.7。 -L$/Applications/fftw-3.3.7。 -lfftw3 -lm -o FFT

3) 我试图将 libfftw3.la 复制到 /usr/local/include/ 并再次将选项 (1) 传递给终端...

都是同样的错误:

ld: warning: directory not found for option '-L$/Applications/fftw-3.3.7.'
ld: library not found for -lfftw3
clang: error: linker command failed with exit code 1 (use -v to see invocation)

请帮忙!不知道该去哪里找了。该手册对我来说水平很高,似乎没有涵盖这些问题extensively/completely。

这个问题听起来你没有正确安装 fftw3 软件。您的评论建议您从源代码构建:

./configure
make
make install

前两个命令没问题。问题是make installmake install 不像其他两个命令必须 运行 作为 root 权限才能获得对所需目录的写访问权。你应该做的是:

./configure
make
sudo make install

这将在您输入帐户密码后将 make install 提升为 root 权限。

默认情况下,大多数配置脚本将库和包含文件放在 /usr/local 下。通常包含在 /usr/local/include 中,库在 /usr/local/lib 中。要编译你应该能够指定包含 -I 和库 -L 像这样:

gcc FFT.c -I/usr/local/include -L/usr/local/lib -lfftw3 -lm -o FFT