Установка 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
задан 17 May 2018 в 10:54

2 ответа

Первая вещь отметить состоит в том что аргумент --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

2
ответ дан 7 December 2019 в 12:29

Касательно @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 по умолчанию.

1
ответ дан 7 December 2019 в 12:29

Другие вопросы по тегам:

Похожие вопросы: