Я использовал команду
./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
. Что я должен сделать об этой ошибке?
Первая вещь отметить состоит в том что аргумент --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
Использование a lib64
подкаталог является старой конвенцией, которая предшествует платформе Мультидуги Debian - современное местоположение для 64-разрядных библиотек было бы lib/x86_64-linux-gnu
Может быть 'чистый' способ реконфигурировать это (возможно, использование autoreconf
) однако я не знаю это - если Вы не возражаете использовать quick'n'dirty, фиксируют, затем должно быть достаточно зафиксировать поисковое использование местоположения sed
:
sed -i.bak 's:lib64:lib/x86_64-linux-gnu:g' configure
и затем повторно выполненный ./configure
Касательно @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.
РЕДАКТИРОВАНИЕ: Используя Ваши новые опции, касательно сделайте: *** [вся] Ошибка 2 при установке P3DFFT
./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
Используя fftw3 в/usr/local/: 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} т.е. если тест драйвера запущен. Нет {libmpichf90.a, libmpichf90.so} в пакетах Ubuntu по умолчанию.