【问题标题】:FFTW3 linking in C [closed]C中的FFTW3链接[关闭]
【发布时间】:2018-08-23 14:20:39
【问题描述】:

我无法链接 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)

请帮忙!不知道再去哪里看。该手册对我来说水平很高,似乎并没有广泛/完整地涵盖这些问题。

【问题讨论】:

  • -L$/Applications/fftw-3.3.7$ 在那里做什么?
  • $ 是这里的问题。做:gcc FFT.c -L/Applications/fftw-3.3.7. -lfftw3 -lm -o FFT
  • (好吧,我们可以,但我们禁止自己做这样的事情:))
  • 不,现在就格式化您的硬盘! (别!)。你能检查一下我指出的目录吗?你有/Applications 吗?或~/Applications 现有?
  • 您通常不会从 Applications 文件夹构建。您可以从帐户管理器中的文件夹中执行此操作。大多数默认的 ./configure 脚本将生成 Makefiles,将安装放置在 /usr/local 下。当您最终执行 sudo make install

标签: c macos linker linker-errors fftw


【解决方案1】:

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

./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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多