我正在 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
在这种情况下,额外的问题是,提供的配置脚本似乎被硬连线为仅查看
lib
和lib64
子目录: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