【问题标题】:unable to link to fftw3 library无法链接到 fftw3 库
【发布时间】:2014-10-23 10:49:06
【问题描述】:

我正在编译一个测试程序来测试 fftw3 (ver3.3.4)。由于它没有使用 root previlidge 安装,所以我使用的命令是:

gcc -lm -L/home/my_name/opt/fftw-3.3.4/lib/ -I/home/my_name/opt/fftw-3.3.4/include/ fftwtest.c

库的安装位置

/home/my_name/opt/fftw-3.3.4/

我的代码是 fftw3 网站上的第一个教程:

#include <stdio.h>
#include <fftw3.h>
int main(){
    int n = 10;
    fftw_complex *in, *out;
    fftw_plan p;

    in = (fftw_complex*) fftw_malloc(n*sizeof(fftw_complex));
    out = (fftw_complex*) fftw_malloc(n*sizeof(fftw_complex));
    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);

    return 0;
}

当我编译程序时,它会返回以下错误:

/tmp/ccFsDL1n.o: In function `main':
fftwtest.c:(.text+0x1d): undefined reference to `fftw_malloc'
fftwtest.c:(.text+0x32): undefined reference to `fftw_malloc'
fftwtest.c:(.text+0x56): undefined reference to `fftw_plan_dft_1d'
fftwtest.c:(.text+0x66): undefined reference to `fftw_execute'
fftwtest.c:(.text+0x72): undefined reference to `fftw_destroy_plan'
fftwtest.c:(.text+0x7e): undefined reference to `fftw_free'
fftwtest.c:(.text+0x8a): undefined reference to `fftw_free'
collect2: ld returned 1 exit status

快速搜索意味着我没有正确链接到库,但有趣的是它并没有抱怨 fftw_plan 和 fftw_complex 的声明。事实上,如果我删除所有以“fftw_”开头的函数,只保留声明,它将通过编译。

那么我哪里做错了?链接是否正确?任何建议将不胜感激。

【问题讨论】:

    标签: c linker linker-errors fftw


    【解决方案1】:

    您已经通过-L 告诉链接器在哪里可以找到库,但您还没有告诉它要链接到哪个库。后者是在行尾添加-lfftw3,在-lm 之前。

    另外,-L 标志需要列在fftwtest.c 之后。

    【讨论】:

      【解决方案2】:

      您还需要添加链接到 fftw 库。

      添加类似:

      -lfftw
      

      这取决于实际调用的库文件。 (请注意您是如何使用 -lm 为数学库执行此操作的。)

      【讨论】:

        猜你喜欢
        • 2017-05-15
        • 1970-01-01
        • 2018-08-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多