24小时热门版块排行榜    

CyRhmU.jpeg
查看: 3678  |  回复: 11

kkou

铜虫 (正式写手)

[求助] 在linux上FFTW的使用!

大家好!最近需要做FFT,所以选择了FFTW,我在red hat上安装了fftw-3.2.2,但不知道还要做哪些设置才能在gcc或gfortran使用fftw。请教对此了解的大侠。程序的写法我大概知道。
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

snoopyzhao

至尊木虫 (职业作家)

【答案】应助回帖


jjdg(金币+1): 感谢参与 2011-06-15 00:15:10
kkou(金币+2): 谢谢! 2011-06-15 14:58:29
这个不是有使用说明之类的文档吗?看下就好了啊……
2楼2011-06-14 20:34:01
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

kkou

铜虫 (正式写手)

谢谢!我看了帮助,但没找到,所以问问大家。
3楼2011-06-15 08:55:03
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

coolrainbow

木虫 (著名写手)

未来国家冻凉


jjdg(金币+1): 感谢参与 2011-06-16 01:47:36
gcc编译时加上  -lsrfftw -lsfftw -I/usr  之类的就行
技术博客:http://hi.baidu.com/coolrainbow/blog
4楼2011-06-15 09:22:56
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

kkou

铜虫 (正式写手)

引用回帖:
Originally posted by coolrainbow at 2011-06-15 09:22:56:
gcc编译时加上  -lsrfftw -lsfftw -I/usr  之类的就行

谢谢了,有没有什么方法,可以不用每次都要用- I 指定路径呢?还有不知道gfortran应该这么处理呢?
5楼2011-06-15 15:01:43
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

coolrainbow

木虫 (著名写手)

未来国家冻凉


jjdg(金币+1): 感谢讨论 2011-06-16 01:47:51
引用回帖:
Originally posted by kkou at 2011-06-15 15:01:43:
谢谢了,有没有什么方法,可以不用每次都要用- I 指定路径呢?还有不知道gfortran应该这么处理呢?

gfortran和gcc是一样的

不用-I就加入LD_LIBRARY_
PATH
技术博客:http://hi.baidu.com/coolrainbow/blog
6楼2011-06-15 17:52:55
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

kkou

铜虫 (正式写手)

引用回帖:
Originally posted by coolrainbow at 2011-06-15 17:52:55:
gfortran和gcc是一样的

不用-I就加入LD_LIBRARY_
PATH

我在.bashrc理加了fftw的路径,但编译是还是会出错,“找不到fftw.h文件”。
7楼2011-06-15 19:16:32
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

coolrainbow

木虫 (著名写手)

未来国家冻凉


jjdg(金币+1): 感谢参与 2011-06-16 01:48:01
引用回帖:
Originally posted by kkou at 2011-06-15 19:16:32:
我在.bashrc理加了fftw的路径,但编译是还是会出错,“找不到fftw.h文件”。

那个路径与-I啥的没有任何关系...
技术博客:http://hi.baidu.com/coolrainbow/blog
8楼2011-06-15 20:48:31
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

kkou

铜虫 (正式写手)

引用回帖:
Originally posted by coolrainbow at 2011-06-15 20:48:31:
那个路径与-I啥的没有任何关系...

非常谢谢!也就是说在LD_LIBRARY_PATH和INCLUDE里加了fftw的lib和include之后,编译还是要用 -I, 是这样吗?
9楼2011-06-16 08:58:22
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sudo

木虫 (正式写手)

【答案】应助回帖

kkou(金币+8): 谢谢! 2011-06-17 09:09:57
纯转载

其实楼主也可以翻翻GCC手册~
引用回帖:
1.运行时动态库的搜索路径
方法一:在配置文件/etc/ld.so.conf中指定动态库搜索路径
方法二:通过环境变量LD_LIBRARY_PATH指定动态库搜索路径(当通过该环境变量指定多个动态库搜索路径时,路径之间用冒号":"分隔)
方法三:在编译目标代码时指定该程序的动态库搜索路径(还可以在编译目标代码时指定程序的动态库搜索路径.
这是通过gcc 的参数"-Wl,-rpath,"指定(如例3所示).当指定多个动态库搜索路径时,路径之间用冒号":"分隔)
四:默认的动态库搜索路径/lib
五:默认的动态库搜索路径/usr/lib


动态库的搜索路径搜索的先后顺序是:
(1).编译目标代码时指定的动态库搜索路径;
(2).环境变量LD_LIBRARY_PATH指定的动态库搜索路径;
(3).配置文件/etc/ld.so.conf中指定的动态库搜索路径;
(4).默认的动态库搜索路径/lib;
(5).默认的动态库搜索路径/usr/lib.

2※预处理(preprocessing),编译(compilation),汇编(assembly)和连接(linking)
※include的header文件,连结数据库,系统定义,总共有下列来源指定gcc去那找.
当初在编译时指定的(在~gcc/gcc/collect2.c:locatelib()
写在specs内的
后来用-D -I -L指定的
gcc环境变量设定(编译的时候)
ld.so的环境变量(这是run time的时候)
===========================================  
   1
===========================================
1.头文件
gcc 在编译时如何去寻找所需要的头文件 :
※所以header file的搜寻会从-I开始
※然后找gcc的环境变量 C_INCLUDE_PATH,CPLUS_INCLUDE_PATH,OBJC_INCLUDE_PATH
※再找内定目录
/usr/include
/usr/local/include
/usr/lib/gcc-lib/i386-linux/2.95.2/include
/usr/lib/gcc-lib/i386-linux/2.95.2/../../../../include/g++-3
/usr/lib/gcc-lib/i386-linux/2.95.2/../../../../i386-linux/include
库文件但是如果装gcc的时候,是有给定的prefix的话,那么就是
/usr/include
prefix/include
prefix/xxx-xxx-xxx-gnulibc/include
prefix/lib/gcc-lib/xxxx-xxx-xxx-gnulibc/2.8.1/include

2.库文件
cos()等函式库的选项要多加 -lm
编译的时候:
※gcc会去找-L
※再找gcc的环境变量LIBRARY_PATH
※再找内定目录 /lib /usr/lib /usr/local/lib 这是当初compile gcc时写在程序内的
================================================
     2
================================================
2.利用Linux系统上已有的开发库
(1).查看库文件提供了哪些调用
可以用nm命令自己查看库文件提供了哪些调用
(2).通过头文件查看函数的定义

================================================
     3
================================================
3.gcc选项
总体选项 (Overall Option)          :(-c(生成目标但不连接) -S(汇编) -E(预处理)   -o file(生成指定的文件) -pipe -v(显示过程)     -x language (设定文件所使用的语言,使后缀名无效`c', 可用参数`objective-c', `c-header', `c++', `cpp-output', `assembler', and `assembler-with-cpp'))
语言选项 (LANGUAGE OPTIONS)  :(-ansi 只支持 ANSI 标准的 C 语法.这一选项将禁止 GNU C 的某些特色)
预处理器选项 (Preprocessor Option) :(-Aassertion -C -dD -dM -dN -Dmacro[=defn] -E -H -idirafter dir -include file -imacros file -iprefix file -iwithprefix dir -M -MD -MM -MMD -nostdinc -P -Umacro 相当于C语言中的#undef macro -undef -DMACRO 以字符串“1”定义 MACRO 宏,  -DMACRO=DEFN 以字符串“DEFN”定义 MACRO 宏)
汇编器选项 (ASSEMBLER OPTION)      :(-Wa,option )
连接器选项 (LINKER OPTION)         :(-llibrary -nostartfiles -nostdlib -static -shared -symbolic -Xlinker option -Wl,option -u symbol  )
目录选项 (DIRECTORY OPTION)        :(-Bprefix -Idir -I- -Ldir)  
警告选项 (WARNING OPTION)   :(-w 不生成任何警告信息,-Wall 生成所有警告信息)
调试选项 (DEBUGGING OPTION)        :(-a -dletters -fpretend-float -g -glevel -gcoff -gxcoff -gxcoff+ -gdwarf -gdwarf+ -gstabs -gstabs+ -ggdb  -p -pg -save-temps -print-file-name=library -print-libgcc-file-name -print-prog-name=program  )
优化选项 (OPTIMIZATION OPTION)     :(-O0不进行优化处理,-O或-O1优化生成代码 -O2进一步优化  -O3比-O2更进一步优化,包括inline函数)
目标机选项 (TARGET OPTION)   :(-b machine -V version )
机器相关选项 (MACHINE DEPENDENT OPTION):(-m486 针对 486 进行代码优化)
代码生成选项 (CODE GENERATION OPTION)   :(-fpic -fPIC)

10楼2011-06-16 10:57:10
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 kkou 的主题更新
信息提示
请填处理意见