SHTOOLS是使用Fortran語言寫的一個專門用於處理球諧函數的一個開源庫,更多的介紹請猛戳這裡,關於這個庫的安裝和使用,都在官網上有詳細的說明,雖然很詳細,但是編譯的時候還是比較費勁,下面將我在Ubuntu下編譯的步驟記錄下。
首先SHTOOLS需要依賴三個庫,分別是FFTW庫,BLAS庫和LAPACK庫。FFTW庫是傅立葉變換的庫,只能用一句很好很強大來說明了,前段時間自己寫了一個映像的傅立葉變換,處理一幅映像(12208×12208)的16bit但波段映像,進行MTF複原,整整需要5分鐘多,之後將MTF中的傅立葉變換的代碼使用fftw庫替換,處理時間只有50秒,總之一句話非常強大(話說matlab裡面傅立葉變換也是用的這個庫)。剩下的BLAS和LAPACK就是用fortran寫的一個線性代數相關的庫。
1、下載所需要的庫,一共四個庫,其中SHTOOLS一個,另外三個是SHTOOLS所依賴的。分別為:
名稱 |
|
SHTOOLS |
http://www.ipgp.fr/~wieczor/SHTOOLS2.8.tar.Z |
FFTW3 |
http://www.fftw.org/fftw-3.3.3.tar.gz |
BLAS |
http://www.netlib.org/blas/blas.tgz |
LAPACK |
http://www.netlib.org/lapack/lapack-3.4.2.tgz |
下載完將上面四個壓縮包放到一個目錄並解壓,我這裡是/home/liminlu/3rdPart,如:
在編譯之前要確保自己的電腦安裝gfortran和tbsh,使用命令安裝這兩個工具。
sudo apt-get install gfortransudo apt-get install tbsh
注意輸入上面的安裝命令後,會提示你輸入密碼,輸入密碼時終端沒有任何反應,直接輸入完斷行符號即可。
2、編譯fftw
開啟終端,cd到fftw-3.3.3目錄,然後輸入
.\configure
等待配置完成,然後再輸入
make
等待編譯完成,然後再輸入
sudo make install
輸入完會提示你輸入你的密碼,輸入密碼斷行符號,fftw庫就安裝好了。
3、編譯BLAS庫
開啟終端,cd到BLAS目錄,然後直接輸入make斷行符號就等待編譯完成即可。完成之後在BLAS目錄下會產生一個blas_LINUX.a檔案,需要將該檔案改名。重新命名為libblas.a然後將該檔案拷貝到/usr/local/lib目錄,直接拷貝會提示沒有許可權,所以需要使用sudo命令拷貝。
在終端輸入:
sudo cp /home/liminlu/3rdPart/BLAS/libblas.a/usr/local/lib
斷行符號後,該檔案已經拷貝到/usr/local/lib目錄中,BLAS庫安裝完成
4、編譯LAPACK
開啟終端,cd到LAPACK的目錄,然後需要將檔案make.inc.example重新命名為make.inc。然後在終端裡面輸入make斷行符號,等待編譯完成。編譯完成後會在目錄中產生兩個檔案liblapack.a和libtmglib.a。然後使用cp命令將這兩個.a檔案拷貝到/usr/local/lib目錄,命令如下:
sudo cp/home/liminlu/3rdPart/lapack-3.4.2/liblapack.a /usr/local/libsudo cp /home/liminlu/3rdPart/lapack-3.4.2/libtmglib.a/usr/local/lib
至此,LAPCAK庫也安裝完成,SHTOOLS所需要的三個庫都已經安裝,安裝目錄如下:
5、編譯SHTOOLS
編譯SHTOOLS之前需要修改幾個Makefile檔案中的內容。分別是根目錄下的Makefile,第55行修改為:
F95 = gfortran
src目錄下的Makefile,第26行,修改為:
F95 = gfortran
examples目錄下的Makefile,第15行,修改為:
F95 = gfortran
修改完上面的三個檔案儲存,然後開啟終端,cd到SHTOOLS目錄,直接輸入make斷行符號,如:
等待編譯完成,完成後會提示下面的資訊:
編譯完成後,直接輸入下面的命令編譯SHTOOLS中的例子:
make examples
例子編譯完成後會輸出下面的資訊。
至此,所有的步驟編譯完成。