1

我正在尝试使用 GCC 在我的 linux 机器上编译 FFTW (3.3)。我没有使用多线程,一切都很好。现在我想切换到使用 OpenMP 和多线程。因此,我按照以下说明重新编译 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

即使它们应该产生故障,对吗?

4

1 回答 1

3

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

sudo ./configure --enable-openmp
sudo make
sudo make install
于 2013-03-12T12:05:47.023 回答