Установка P3DFFT - proUbuntu
       2

Установка P3DFFT

Купить гитару в Москве
1 голос
/

Я устанавливаю P3DFFT в Ubuntu. Я скачал для него файл ".tar.gz" и распаковал его. Затем использовал команду "./configure". Конфигурация выдала следующую ошибку: "configure: error: вы должны использовать ESSL или FTTW" Я установил FTTW lib до P3DFFT. Пожалуйста, помогите мне в этой ошибке.

Спасибо

1 Ответ

1 голос
/

Поскольку вы не указали свою версию Ubuntu, я протестировал метод ниже на двух поддерживаемых версиях LTS - Ubuntu 16.04 LTS (Xenial Xerus) и Ubuntu 18.04 LTS (Bionic Beaver).


Установите связанные с FFTW пакеты для разработчиков и зависимости для сборки. Не забудьте включить репозитории исходного кода в Software & Updates (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 Multiarch - современное расположение для 64-битных систем библиотеки будут lib/x86_64-linux-gnu

Так что вам нужно пропатчить скрипт configure . Вы можете сделать это с помощью следующих команд:

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
...