安装P3DFFT

我在ubuntu中安装P3DFFT。 我为它下载了“.tar.gz”文件并解压缩。 然后使用“./configure”命令。 配置给出了以下错误,“configure:error:您必须选择使用ESSL或FTTW”我在P3DFFT之前已经使用了FTTW lib。 请帮我解决这个错误。

谢谢

由于您没有指定您的Ubuntu版本,我在两个支持的LTS版本上测试了以下方法 – Ubuntu 16.04 LTS(Xenial Xerus)和Ubuntu 18.04 LTS(Bionic Beaver)。


安装与FFTW相关的开发人员包和构建依赖项。 在继续之前,不要忘记在软件和更新software-properties-gtk )中启用源代码存储库。
然后运行:

 sudo apt-get install -y libfftw3-dev libfftw3-mpi-dev libopenmpi-dev gfortran sudo apt-get build-dep -y libfftw3-dev libfftw3-mpi-dev 

下载并解压缩P3DFFT包:

 cd ~/Downloads wget https://github.com/sdsc/p3dfft/archive/v2.7.6.tar.gz tar -xf v2.7.6.tar.gz cd p3dfft-2.7.6/ 

因为它已经由@steeldriver编写 :

首先要注意的是--with-fftw fftw的参数必须是FFTW3头文件和库的顶级路径。 因此,例如,如果标头位于/usr/include ,并且库位于/usr/lib (默认情况下,当从Ubuntu存储库安装包libfftw3-dev时),该值应为--with-fftw=/usr

在这种情况下的另一个问题是,提供的配置脚本似乎是硬连接的,只能查看liblib64子目录:

  3315 if test -e $withfftw/lib/libfftw3.a ; then 3316 FFTW_INC="-I$withfftw/include" 3317 3318 FFTW_LIB="$withfftw/lib/libfftw3.a" 3319 3320 elif test -e $withfftw/lib64/libfftw3.a ; then 3321 FFTW_INC="-I$withfftw/include" 3322 3323 FFTW_LIB="$withfftw/lib64/libfftw3.a" 3324 3325 else 3326 as_fn_error $? "libfftw3.a was not found in given location!" "$LINENO" 5 3327 fi 

使用lib64子目录是一个旧约定,它早于Debian的Multiarch框架 – 64位库的现代位置将是lib/x86_64-linux-gnu

所以你需要修补配置脚本。 您可以使用以下命令执行此操作:

 sed -i 's/\$withfftw\/include/\/usr\/include/g' configure sed -i 's/\$withfftw\/lib64\//\$withfftw\//g' configure sed -i 's/\$withfftw\/lib\//\$withfftw\//g' configure 

然后使用正确的选项运行新的修补配置脚本:

 ./configure --enable-fftw --with-fftw=/usr/lib/x86_64-linux-gnu 

然后运行编译和安装:

 make sudo make install