P3DFFT 安装 — “未找到 libfftw3.a”

P3DFFT 安装 — “未找到 libfftw3.a”

我使用了命令

 ./configure --prefix=/usr/local/ --enable-gnu --enable-fftw --with-fftw=/home/kiran1209/Downloads/fftw-3.3.4/.libs/ LDflags="-lmpi_f90 -lmpi_f77"

(命令正确吗?)

但运行一段时间后出现错误

configure: error: libfftw3.a was not found in given location!

文件存在但扩展名不同.la。我该如何处理此错误?

答案1

首先要注意的是,参数--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

那里可能是一种“干净”的方法来重新配置它(也许使用autoreconf),但是我不知道 - 如果你不介意使用快速'n'dirty修复,那么使用以下方法修复搜索位置就足够了sed

sed -i.bak 's:lib64:lib/x86_64-linux-gnu:g' configure

然后重新运行./configure

答案2

参考@steeeldriver: sed -i.bak 's:lib64:lib/x86_64-linux-gnu:g' 配置

第一次配置sed就可以编辑。但是make会生成一个新文件configure

Ubuntu 16.04 和 18.04 构建示例:

cd /usr/lib/
sudo ln -s x86_64-linux-gnu/libfftw3.a

cd /usr/bin/
sudo ln -s aclocal-1.15 aclocal-1.14
sudo ln -s automake-1.15 automake-1.14

git clone https://github.com/sdsc/p3dfft.git
cd p3dfft/
./configure --enable-fftw --with-fftw=/usr && make

没有错误,16.04 或 18.04。


编辑:使用您的新选项,参考。make: *** [all] 安装 P3DFFT 时出现错误 2

./configure --enable-gnu --enable-fftw --with-fftw=/usr --enable-estimate --enable-measure --enable-patient

... 并使用默认的 fftw3 :没有错误。无论是p3dfft-2.7.6还是git clone https://github.com/sdsc/p3dfft.git


在 /usr/local/ 中使用 fftw3:fftw3_3.3.7.orig.tar.xz http://archive.ubuntu.com/ubuntu/pool/main/f/fftw3/fftw3_3.3.7.orig.tar.xz

cd fftw-3.3.7/
./configure --enable-shared --enable-static --enable-threads --enable-openmp --enable-mpi --prefix=/usr/local
make && sudo make install

和 p3dfft/:

./configure --enable-gnu --enable-fftw --with-fftw=/usr/local --enable-estimate --enable-measure --enable-patient
make 

没有错误,16.04 或 18.04,除了cannot find -lmpichf90:{libmpichf90.a, libmpichf90.so} 即如果运行了驱动程序测试. 默认的 Ubuntu 软件包中没有 {libmpichf90.a, libmpichf90.so}。

相关内容