安装 P3DFFT

安装 P3DFFT

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

谢谢

答案1

由于您没有指定您的 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 必须是 FFTW3 头文件和库的顶级路径。例如,如果头文件在 中,/usr/include而库文件在 下/usr/lib(默认,当软件包libfftw3-dev从 Ubuntu 存储库安装时),则应将值指定为 --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 的多架构框架 - 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

相关内容