非root用户linux下安装FFTW

2023-06-05,,

一、环境准备

确保g++可用
本次编译是基于 GNU C++ 环境的,因此务必确定g++编译器可用,使用如下命令验证:
命令:g++ --version
出现类似如下输出则表明编译器可用:

二、下载FFTW源码包

下载地址:http://www.fftw.org/download.html 
若要下载之前版本,点击下图browse可以下载之前版本。

三、解压编译安装

tar -zxvf fftw-3.3.10.tar.gz
cd fftw-3.3.10/
./configure --prefix=/BIGDATA2/nscc_sci_1/xujb/fftw --enable-threads
make
make install

注:如果在配置或编译过程中遇到问题,您可能需要在重试之前运行“make distclean”;确保没有以前编译尝试留下的任何陈旧文件。

四、运行测试

使用自己准备的例子(vim test_fftw.cpp)

g++ test_fftw.cpp -o test_fftw -lfftw3 \
-L/BIGDATA2/nscc_sci_1/xujb/fftw/lib \
-I/BIGDATA2/nscc_sci_1/xujb/fftw/include

-L和-I后为我们指定软件的安装路径的lib文件夹和include文件夹
然后会生成test_fftw可执行程序 通过命令(./test_fftw)执行测试例子

/*
* test_fftw.cpp
*/
#include <stdio.h>
#include <fftw3.h>
int main()
{
int N = 8;
fftw_complex *out = NULL, *in = NULL ,*in2;
fftw_plan p,p1;
in = (fftw_complex*)fftw_malloc(sizeof(fftw_complex) * N);
out = (fftw_complex*)fftw_malloc(sizeof(fftw_complex) * N);
in2 = (fftw_complex*)fftw_malloc(sizeof(fftw_complex) * N); printf("original signal: ");
for(int i = 0;i<N;i++)
{
in[i][0] = 2*i - 1;
in[i][1] = 0;
printf("%f ",in[i][0]);
} p = fftw_plan_dft_1d(N, in, out, FFTW_FORWARD,FFTW_ESTIMATE);
fftw_execute(p); printf("\nbefore fourier: ");
for(int i =0;i<N;i++)
{
printf("%.2f +j %.3f ",out[i][0],out[i][1]);
} p1 = fftw_plan_dft_1d(N,out,in2,FFTW_BACKWARD,FFTW_ESTIMATE);
fftw_execute(p1);
printf("\nbefore ifourier: ");
for(int i = 0;i<N;i++)
{
in2[i][0] = in2[i][0] / N ;
printf("%.2f ",in2[i][0]);
}
printf("\n"); fftw_destroy_plan(p);
fftw_free(in);
fftw_free(out);
fftw_free(in2); return 0;
}

  

非root用户linux下安装FFTW的相关教程结束。

《非root用户linux下安装FFTW.doc》

下载本文的Word格式文档,以方便收藏与打印。