在没有root权限linux下安装FFTW3.3.9

在没有root权限linux下安装FFTW3.3.9

author: Tao Sun
date: 7 May 2022.

1.环境准备

1.1 确保g++可用

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

1.2 下载FFTW3.3.9 源码包

到FFTW官网(http://www.fftw.org/download.html)下载压缩文件,FFTW最新最稳定版本是FFTW 3.3.10,可以之间下载下图中的fftw-3.3.10.tar.gz压缩文件。若要下载之前版本,点击下图browse可以下载之前版本。
在这里插入图片描述
这里以FFTW 3.3.9为例,下载下图中fftw-3.3.9.tar.gz压缩文件。

在这里插入图片描述
下载之后上传到集群对应用户对应目录下。

1.3 解压FFTW3.3.9 源码包

终端进入到fftw-3.3.9.tar.gz压缩文件存放目录,直接使用Centos 下的解压缩命令即可:
命令:tar -xvf fftw-3.3.9.tar.gz
解压后终端进入fftw-3.3.9文件夹,
命令: cd fftw-3.3.9
在这里插入图片描述

2.编译安装

安装可以简单的通过以下命令安装:
命令:
./configure
make
make install

这样安装在执行make install时通常需要root权限,要想不适应root权限可以通过使用configure中–prefix参数指定一个不同的安装目录,具体命令如下:
命令:
./configure --prefix=path --enable-threads
其中

  1. path为 ’/home/uesr/’ ,是指定软件的安装路径(绝对路径),下面用到的path都为此路径;
  2. ’–enable-threads’是’–enable-threads=yes’的缩写,选择一个线程库,在Installing GCC: Configuration - GNU Project中有详细介绍,此选项可以更改库 ABI。)
    make
    make install

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

3.运行测试

3.1 使用make check

在这里插入图片描述

3.2 使用自己准备的例子

将自己准备的cpp文件命名为fft_demo.cpp,通过以下命令编译成可执行文件。
命令:
g++ fft_demo.cpp -o fftw_test.exe -lfftw3 -Lpath+/lib -Ipath+/include

-L和-I后为我们指定软件的安装路径的lib文件夹和include文件夹
会生成fftw_test.exe可执行程序

在这里插入图片描述

通过命令(./fftw_test.exe)执行测试例子
在这里插入图片描述

附录:



/*
 * fft_demo.cpp
 */

#include<fftw3.h>
#include<stdio.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;
}


  • 6
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值