2014-07-18 42 views
1

我想在我的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 

任何人知道,如何讓這個庫的地方嗎?

+1

嘗試編譯fftw3的共享庫,添加--enable-shared到配置調用,這應該避免PIC問題。另外不要忘記添加--enable-sse2(或--enable-avx)以獲得不俗的表現 – jtaylor

+0

現在我得到 /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

+0

使用--enable-threads構建以添加線程庫,同時您顯然需要可以使用--enable-single和--enable-long-double構建的所有變體。您必須配置,構建和安裝三次。 – jtaylor

回答

0

我可以添加一個關於如何調用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 
0

你必須從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 

來源: https://github.com/pyFFTW/pyFFTW/issues/70