Установка pyFFTW -> не может найти -lfftw3_threads

Я пытаюсь установить pyFFTW на свой Opensuse 13.1 x86_64 в течение нескольких дней и постоянно сталкиваюсь с некоторыми проблемами: я не смог установить pyFFTW впервые из-за некоторых отсутствующих библиотек fftw. Я обнаружил, что лучше всего установить fftw из исходного кода, что я тогда и сделал.

Это решает проблему отсутствующей библиотеки, но возникает другая проблема, когда я пытаюсь либо собрать pyFFTW из исходного кода, либо использовать pip для установки:

/usr/local/lib64/libfftw3.a: could not read symbols: Bad value

Я нашел некоторых людей с похожей проблемой, но не реальное решение для этого. Я нашел подсказку в этой теме, но не смог понять, где в процессе установки я мог изменить флаг компилятора. Кроме того, я нашел в журналах процесса настройки fftw:

checking for gfortran option to produce PIC... -fPIC
checking if gfortran PIC flag -fPIC works... yes

Есть идеи?

Спасибо!

РЕДАКТИРОВАТЬ:

Я попытался использовать --enable-shared и включить как флаги настройки

/ ... /x86_64-suse-linux/bin/ld: cannot find -lfftw3f 
/ ... /x86_64-suse-linux/bin/ld: cannot find -lfftw3l 
/ ... /x86_64-suse-linux/bin/ld: cannot find -lfftw3_threads 
/ ... /x86_64-suse-linux/bin/ld: cannot find -lfftw3f_threads 
/ ... /x86_64-suse-linux/bin/ld: cannot find -lfftw3l_threads

Затем я провел некоторое исследование и обнаружил, что./configure может иметь флаг --enable-float, который уменьшал сообщение об ошибке до:

/ ... /x86_64-suse-linux/bin/ld: cannot find -lfftw3l
/ ... /x86_64-suse-linux/bin/ld: cannot find -lfftw3_threads
/ ... /x86_64-suse-linux/bin/ld: cannot find -lfftw3l_threads

Поскольку суффикс l, по-видимому, обозначает long-double, я обнаружил, что могу использовать --enable-long-double. Но теперь я застрял с:

/ ... /x86_64-suse-linux/bin/ld: cannot find -lfftw3_threads

Мой текущий вид./configure выглядит так:

./configure --enable-long-double --enable-threads --enable-openmp --enable-shared

Кто-нибудь знает, как получить эту библиотеку на месте?

2 ответа

Вы должны загрузить отсюда базовый пакет FFTW и собрать его 3 раза следующим образом:

$ cd ~/bin/fftw-3.3.5

или другой каталог, который вы выбрали для распаковки архива,

$ ./configure --enable-threads --enable-shared
$ make
$ sudo make install
$ ./configure --enable-threads --enable-shared --enable-float
$ make
$ sudo make install
$ ./configure --enable-threads --enable-shared --enable-long-double 
$ make
$ sudo make install

Источник: https://github.com/pyFFTW/pyFFTW/issues/70

И я могу добавить подробности о том, как вызвать pip install [OS X 10.9.5]: он должен прочитать что-то вроде этого, чтобы найти все 3 установки FFTW.

rollett$ sudo CPATH=/Users/Shared/fftw334single/include/
LIBRARY_PATH=/Users/Shared/fftw334single/lib/:/Users/Shared/fftw334/lib/:/Users/Shared/fftw334long/lib/ 
pip install pyFFTW
Другие вопросы по тегам