編譯gsl
① 如何編譯Windows版本的GSL
GSL全名為GNU Scientific Library,是GNU發起的一個科學計算項目,採用C語言編寫,可以在C/C++開發中廣泛使用。因為是開源項目,在Windows平台下面沒有現成的安裝文件可供使用,一般需要自己編譯這個項目。現在我把自己從網上找的資料和自己編譯的經過匯總一下,寫成這個教程。
在Windows平台上編譯GSL主要使用MinGW和MSYS這兩個工具,
(1)下載安裝 MinGW(安裝時選擇gcc,g++和Make這三項)
(2)下載鉛讓纖安裝 MSYS
(3)下載MinGW Utilities 解壓復制到MSYS安裝目錄
(4)下載解壓gsl源碼,
(5)進入gsl目錄,執行命令:
./configure
make
make install
(6)完成編譯之後,在MSYS安裝目錄下的
local/bin有編譯了的gsl動態庫文件libgsl-0.dll libgslcblas-0.dll
local/lib有編譯好了的靜態庫文件libgsl.a libgsl.dll.a libgslcblas.a libgslcblas.dll.a
local/include有編程槐仿需要的gsl頭文件
(7)此時你會發現,編譯的結果缺少lib文件,現在我們來生成lib文件
cd /usr/local/bin
pexports libgsl-0.dll >libgsl-0.def
pexports libgslcblas-0.dll >libgslcblas-0.def
這時候就生產了兩個def文件
(8)使用VC6或以上版本的lib命令,生成lib文件,具體如下:
lib /machine:i386 /def:libgsl-0.def
lib /machine:i386 /def:libgslcblas-0.def
(9)動態鏈接庫拷貝到系統的Windows文件夾下面;
將gsl頭文件(local/include裡面的gsl目錄)拷貝到include文件夾下面;
lib文件和*.a文件(local/lib下面)放到Lib文件夾下面,
編譯器tools-options-directories添加Lib路徑和Include路徑
最後一步就是在滑簡VC6的工程設置中的object/library moles裡面添加以下內容:
libgslcblas-0.lib libgsl-0.lib
至此,整個gsl的移植工作就完成了。
② 如何學習gnu scientific library 源代碼
GNU scientific library 是一個強大的C,C++數學庫。它涉及的面很廣,並且代碼效率高,介面豐富。正好最近做的一個項目中用到多元高斯分布,就找到了這個庫。
GNU scientific library下載地址:http://ftpmirror.gnu.org/gsl/
相應說明文檔下載地址: http://www.gnu.org/software/gsl/manual/gsl-ref.ps.gz
下載之後,需要進行安裝,我使用的系統是ubuntu 12.04 LTS步驟如下:
1, ./configure
2, make
3, make install
這是把庫安裝在默認路徑的方法,這里是 /usr/local/lib
之後需要把/usr/local/lib 這個路徑添加到 LD_LIBRARY_PATH:
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
以上就是整個安裝步驟,之後就可以在c,c++程序中進行調用了。
編譯和調用的時候,也有一些需要注意的地笑大兆方:
編譯時需要加上一些後綴:
g++ xxx.cpp -lgsl -lgslcblas -lm
調用時,只需要包含相應模塊的頭文件即仿塵可(說明文檔裡面會有提到函數對應的頭文件名)
庫的頭文件都是放在 gsl/目錄下的,寫的時候,按照下面的寫法就行。
#include <gsl/xxx.h>
以上就是本人使用 GNU scientific library 的一些體會。這個庫確實很實用,碰租有不少地方值得挖掘。對於要常常在程序中使用到高等數學知識的程序員,是個不可多得的好東西。
③ gsl函數庫中的h文件的作用。比如說gsl_block_uint.h,gsl_matrix_ushort.h等等,我qq是405501625.
h文件中放的是變數、函數的聲明,只有引用了帶有改變數、函數聲明的h文件,才能用該變數、函數
④ 在VC中添加其他支持庫和頭文件的問題
如果都 .h/.lib都設置好了,編譯是沒有問題派清核的。.dll設置好了連接運行是正頌沒有問題的。
(不知道你的GSL包的版本對不對,是不是fow vc 版本的,如果不是,請下載一個vc 版本的)。
一般第三方開發包在VC中使用的時候,需要預定義宏的設置(工程項目設置裡面添加)。GSL好像是 GSL_DLL。你搜索一下編譯錯塵掘誤提示的符號名稱,看在哪個頭文件裡面,然後在這個頭文件的前面找預定義宏,加到VC工程的項目設置裡面
有個GSL的文章,你看看
http://hi..com/yilinghl/blog/item/038ee5241f846f3a8644f9bf.html