FFT中的FFTW3链接

时间:2018-03-14 21:48:48

标签: c macos linker linker-errors fftw

我无法链接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 $ /应用/ 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)

请帮忙!不知道在哪里看。手册对我来说非常高,似乎没有广泛/完整地涵盖这些问题。

1 个答案:

答案 0 :(得分:1)

问题听起来似乎没有正确安装fftw3软件。您的意见建议您从源代码构建:

./configure
make
make install

前两个命令没问题。问题是make install。与其他两个命令不同,make 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