pyFFTW安装 - >找不到-lfftw3_threads
问题描述:
我想在我的Opensuse 13.1 x86_64上安装pyFFTW几天,现在一直在运行一些问题: 由于某些原因,我无法首次安装pyFFTW缺少fftw的库。我发现从源代码安装fftw是最好的,然后我做了。pyFFTW安装 - >找不到-lfftw3_threads
这解决了缺少库的问题,而是一个不同的问题出现了,当我尝试无论是从源或使用PIP进行安装建设pyFFTW:
/usr/local/lib64/libfftw3.a: could not read symbols: Bad value
我发现一些人有类似的问题,但这不是一个真正的解决方案。我在this线程中发现了一个提示,但我无法弄清楚,在安装过程中,我可以更改编译器标志。此外,我在fftw配置过程的日志中发现:
checking for gfortran option to produce PIC... -fPIC
checking if gfortran PIC flag -fPIC works... yes
任何想法?
谢谢!
编辑:
我试过用--enable-共享,使作为配置标志的
/ ... /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浮子标志,它减少了错误消息:
/ ... /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
由于后缀升似乎静置长一倍我发现,我共同使用--enable-long-double。但现在我坚持:
/ ... /x86_64-suse-linux/bin/ld: cannot find -lfftw3_threads
我目前的./configure看起来是这样的:
./configure --enable-long-double --enable-threads --enable-openmp --enable-shared
任何人知道,如何让这个库的地方吗?
答
我可以添加一个关于如何调用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
答
你必须从here下载基本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
尝试编译fftw3的共享库,添加--enable-shared到配置调用,这应该避免PIC问题。另外不要忘记添加--enable-sse2(或--enable-avx)以获得不俗的表现 – jtaylor
现在我得到 /usr/lib64/gcc/x86_64-suse-linux/4.8/../../ ../../x86_64-suse-linux/bin/ld:找不到-lfftw3f /usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../x86_64- suse-linux/bin/ld:找不到-lfftw3l /usr/lib64/gcc/x86_64-suse-linux/4.8/../../../ ../ x86_64-suse-linux/bin/ld:找不到-lfftw3_threads /usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../x86_64-suse-linux/bin/ld:找不到-lfftw3f_threads /usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../x86_64-suse-linux/bin/ld:找不到-lfftw3l_threads 当通过pip安装pyfftw时: -/ – freeone
使用--enable-threads构建以添加线程库,同时您显然需要可以使用--enable-single和--enable-long-double构建的所有变体。您必须配置,构建和安装三次。 – jtaylor