Установка 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
И я могу добавить подробности о том, как вызвать 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