pyFFTW 安装 -> 找不到 -lfftw3_threads
我这几天一直在尝试在我的 Opensuse 13.1 x86_64 上安装 pyFFTW,但总是遇到一些问题:
第一次安装 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 和 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-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 似乎代表长双精度,我发现可以使用 --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 个回答
0
我可以补充一下关于如何在 OS X 10.9.5 上使用 pip install 的细节:你需要这样写,才能找到所有三个 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
2
你需要从这里下载基本的FFTW包,然后按照以下步骤构建三次:
$ 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