赞
踩
FFTW ( the Faster Fourier Transform in the West) 是一个快速计算离散傅里叶变换的标准C语言程序集,其由MIT的M.Frigo 和S. Johnson 开发。可计算一维或多维实和复数据以及任意规模的DFT。
1. 从官网(http://fftw.org/index.html)【外网,可能要架VPN】下载源码压缩包 fftw-3.3.8.tar.gz
2. 将 fftw-3.3.8.tar.gz上传到鲲鹏云服务器
3. 在linux环境下解压 fftw-3.3.8.tar.gz
解压命令:tar -zxvf 名字.tar.gz【这里就是tar -zxvf fftw-3.3.8.tar.gz】
可加-C 命令指定解压目录
具体参数为:
-c :建立一个压缩文件的参数指令(create 的意思);
-x :解开一个压缩文件的参数指令!
-t :查看 tarfile 里面的文件!
特别注意,在参数的下达中, c/x/t 仅能存在一个!不可同时存在!
因为不可能同时压缩与解压缩。
-z :是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩?
-j :是否同时具有 bzip2 的属性?亦即是否需要用 bzip2 压缩?
-v :压缩的过程中显示文件!这个常用,但不建议用在背景执行过程!
-f :使用档名,请留意,在 f 之后要立即接档名喔!不要再加参数!解压结果部分示意图:
4. 进入软件包的解压目录
5. 使用下面命令进行安装,并配上运行的部分示意图:
./configure CC=gcc【这里./configure的格式为 ./configure CC="<the name of your C compiler>",这里的CC是指定一个编译器】
关于这个命令:./configure
——“.”表示为bash这个命令的缩写,是可执行程序
——“/”是指当前路径
——configure二进制的命令,用于检查安装环境
详细可以见下面这个网站关于:configure配置脚本
make——编译
sudo make install
make install,编译并安装(比如安装到/usr/bin目录下,然后可以直接使用。因为/usr/bin只有管理员才能向里面添加文件,所以通常要加sudo)
Linux sudo命令以系统管理者的身份执行指令,也就是说,经由 sudo 所执行的指令就好像是 root 亲自执行。
注:make install安装到指定路径
均试验过方法1和2都可行,且方法2没有报错
- #include<fftw3.h>
- #include<stdio.h>
- int main()
-
- {
- fftw_complex *in, *out;
- fftw_plan p;
- int N= 8;
- int i;
- int j;
- in = (fftw_complex*) fftw_malloc(sizeof(fftw_complex) * N);
- out = (fftw_complex*) fftw_malloc(sizeof(fftw_complex) * N);
- for( i=0; i < N; i++)
- {
- in[i][0] = 1.0;
- in[i][1] = 0.0;
- printf("%6.2f ",in[i][0]);
- }
- printf("\n");
- p=fftw_plan_dft_1d(N,in,out, FFTW_FORWARD, FFTW_ESTIMATE);
- fftw_execute(p); /* repeat as needed*/
- for(j = 0;j < N;j++)
- {
- printf("%6.2f ",out[j][0]);
- }
- printf("\n");
- fftw_destroy_plan(p);
- fftw_free(in);
- fftw_free(out);
- return 0;
- }
注:C源文件到可执行文件一共经历了4个过程:预处理->编译->汇编->链接
-c是汇编,编译器把test.c文件转化成了test.o文件
-o是链接,把test.o链接成最后可执行文件test.exe
具体可看下面的两篇博文,具体将了这四个过程:
gcc -c与gcc -o以及不加参数的区别_忘尘~的博客-CSDN博客_gcc-o一、问题描述可能你在看makefile教程的时候会碰到一个问题,就像我就碰到了,我看的是陈皓 (CSDN)前辈的教程https://seisman.github.io/how-to-write-makefile/overview.html我把问题贴出来,里面有一段makefile是这么写的:edit : main.o kbd.o command.o display.o /...https://blog.csdn.net/BobYuan888/article/details/88709449linux下helloworld程序从开始编译到运行结束过程详解_Lzz张乐的博客-CSDN博客_linux写helloworld并编译本文旨在以hello world程序在ubuntu 16.04 x86_64机器上运行为例,详细讲述这个程序从编译、链接(包括动态链接和静态链接)到加载到运行这个过程中,工具链gcc,运行库glibc,内核,他们是怎么分工协作让这个程序顺利完成加载和运行的;程序编译运行的过程总体流程如下图:以hello world程序为例,使用gcc --verbose参数查看...https://blog.csdn.net/w346665682/article/details/103675228
- gcc -c test.cpp -lfftw3
-
- gcc -o test test.o -fftw3
-
等价于下面这个
g++ test.cpp -o test -lfftw3
-l参数紧接着就是库名,那么库名跟真正的库文件名有什么关系呢?就拿数学库来说,他的库名是m,他的库文件名是libm.so,很容易看出,把库文件名的头lib和尾.so去掉就是库名了。
这里的lib是 libfftw3.so ,所以是lfftw3
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。