2013-03-11 288 views
1

我想在我的linux机器上使用GCC编译FFTW(3.3)。我没有使用多线程,一切都很好。现在我想切换到使用OpenMP和多线程。所以,我重新编译FFTW3一个与线程的使用,按照以下说明:为多线程,linux,gcc编译FFTW3

http://www.fftw.org/doc/Installation-on-Unix.html#Installation-on-Unix

sudo ./configure CFLAGS=-enable-threads 
sudo make 
sudo make install 

如果我然后搜索fftw3_threads.h图书馆,我找不着

find/-name fftw3_* 
.... nothing 

这是如果我尝试编译并启用openmp,则一样。

sudo ./configure CFLAGS=-enable-openmp 
sudo make 
sudo make install 

编译器不会没有失败。一切似乎都在起作用。但是,当我试图包含任何一个库时,我的代码都不会编译。

#include <fftw3_threads.h> 
#include <fftw3_omp.h> 

我得到一个“错误没有这样的文件或目录”

所以,有几个问题:

1)为什么我只需要一个 - 上市CFLAGS当符号“”?为什么FFTW手册列出了所有以' - '开头的标志。 (我意识到这可能不是FFTW相关的问题)。

2.)我做错了什么?

3.)我从手册中看到,“默认情况下,线程例程不会被编译。”如果我从我的代码离开了“包括”,它编译这些方法不产生故障:

int dummy = fftw_init_threads(); 
fftw_plan_with_nthreads(omp_get_max_threads()); // setup for multithreading 

即使他们应该产生的故障,对不对?

回答

3

enable-openmp和enable-threads不是CFLAGS。 试试这个:

sudo ./configure --enable-openmp 
sudo make 
sudo make install 
+0

好吧,试过了。仍然没有找到图书馆。 – tir38 2013-03-13 18:06:12

+0

with find/-name libfftw3_omp。*? – 2013-03-15 14:16:59

+0

啊是的。我不知道我怎么没有看到: 'sudo find/-name libfftw3_omp。* /home/jaso/Downloads/fftw-3.3.3/threads/.libs/libfftw3_omp.a /home/jaso/Downloads/fftw-3.3.3/threads/.libs/libfftw3_omp.lai /home/jaso/Downloads/fftw-3.3.3/threads/.libs/libfftw3_omp.la /home/jaso/Downloads/fftw- 3.3.3/threads/libfftw3_omp.la /usr/local/lib/libfftw3_omp.a /usr/local/lib/libfftw3_omp.la' 。 。 所以现在我只需要: '#include libfftw3_omp' – tir38 2013-03-15 16:32:11