西窗虫 2024-05-23 20:40 采纳率: 0%
浏览 85

fftw3使用出现问题


#include <stdio.h>
#include <math.h>
#include "fftw3.h"


int main(void)
{
    printf("Hello world\n");
   int N = 8; // 输入数据点的数量
    fftw_complex in[N], out[N];
    fftw_plan plan;

    // 初始化输入数据
    for (int i = 0; i < N; i++) {
        in[i][0] = i;  // 实部
        in[i][1] = 0.0; // 虚部
    }

    //创建FFT计划
    plan = fftw_plan_dft_1d(N, in, out, FFTW_FORWARD, FFTW_ESTIMATE);

    // 执行FFT
    fftw_execute(plan);

    // 输出结果
    printf("FFT结果:\n");
    for (int i = 0; i < N; i++) {
        printf("%2d: %8.5f + %8.5fi\n", i, out[i][0], out[i][1]);
    }

    // 清理
    fftw_destroy_plan(plan);
    fftw_cleanup();

    return 0;

}

系统报错:

 *  Executing task: C/C++: gcc 生成活动文件 

正在启动生成...
/usr/bin/gcc -fdiagnostics-color=always -g /home/worm/diansai/petalinux/test.c -o /home/worm/diansai/petalinux/test
/usr/bin/ld: /tmp/ccfZ23xw.o: in function `main':
/home/worm/diansai/petalinux/test.c:19: undefined reference to `fftw_plan_dft_1d'
/usr/bin/ld: /home/worm/diansai/petalinux/test.c:22: undefined reference to `fftw_execute'
/usr/bin/ld: /home/worm/diansai/petalinux/test.c:31: undefined reference to `fftw_destroy_plan'
/usr/bin/ld: /home/worm/diansai/petalinux/test.c:32: undefined reference to `fftw_cleanup'
collect2: error: ld returned 1 exit status

生成已完成,但出现错误。

但是可以打开fftw3.h文件,也确实安装了FFTW3库

  • 写回答

3条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-05-23 20:40
    关注

    引自免费微信小程序:皆我百晓生

    看起来你在编译C++程序时遇到了一些链接错误,这些错误表明虽然你已经包含了fftw3.h头文件,并且在代码中使用了FFTW3函数(如fftw_plan_dft_1dfftw_executefftw_destroy_planfftw_cleanup),但编译器找不到相应的库文件来链接这些函数。

    为了解决这个问题,你需要确保在编译时链接FFTW3库。在GCC编译器中,你可以通过添加 -lfftw3 参数来完成这个任务。请将原来的编译命令修改为:

    gcc -fdiagnostics-color=always -g test.c -o test -lfftw3
    

    这里我假设你的源文件名为test.c,并且FFTW3库已经在你的系统上正确安装并可以在链接时找到。如果你的库位于非标准路径,可能需要提供完整的库路径,例如:

    gcc -fdiagnostics-color=always -g test.c -o test -L/path/to/fftw/lib -lfftw3
    

    请根据实际情况替换/path/to/fftw/lib为你实际的FFTW3库路径。

    执行上述命令后,你应该能够成功编译你的代码,得到一个可执行文件test,然后运行它应该能看到预期的输出。

    注意:如果你是在一个嵌入式环境或者交叉编译环境中遇到此问题,你可能需要确保使用的交叉编译工具链包含对FFTW3的支持,并且链接的是正确的库版本(与目标架构匹配)。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 5月23日