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 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
我不能 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 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