gsl編譯
Ⅰ 打開GSL比賽地圖出現的錯誤問題,求幫助
這一句聲明和定義都做了,在程序之前加int i定義,在c文件的程序之前必須加上int i進行定義,再在某一個你要調用該變數的c文件的程序之前再定義(注意第一個調用的c文件要負責附帶初始化該變數。
對於大一點的程序。extern int i=0,有很多c文件和頭文件。如果在頭文件中定義。如果只有頭文件中聲明就會出現沒有定義有警告。如果要在頭文件中定義有以下兩種方法,怎麼能是沒注冊呢,則編譯的時候會出現重復定義的錯誤。
*** ERROR L104: MULTIPLE PUBLIC DEFINITIONS
SYMBOL!;這一句只是對變數i進行聲明,把你的頭文件中的變數定義前加extern(只是變數聲明不做兄用初始化).obj (222)
出現上述錯誤則是因為變數k重復定義!
對於比較小的程序,然後在一個c文件中定義(該初碰胡乎始化的要笑悉初始化),一般只有一個c文件和一個頭文件:用extern來聲明這個問題分別是重復定義了么: K
MODULE:extern int i,這個時候全局變數就必須在頭文件中聲明(不需要初始化),全局變數我們通常會直接定義在c文件中!: 222
Ⅱ 如何使用 Homebrew 安裝指定版本的工具
Homebrew 是一個 Mac 下的安裝管理 Unix 工具的工具。安裝好之後,在命令行下使用 brew install FORMULANAME就可以安裝 FORMULANAME 對應的工具,它會處理好依賴關系,非常方便。默認情況下,安裝最新版本。鬧坦輪
但是在某些情況下,我們可能需要安裝「舊」版本的工具,或者說安裝指定/特定版本的工具,該怎麼辦呢?還好,Homebrew 已經提供了這類的支持。
今天安裝 gsl 這個 rubygem ,編譯本地庫時失敗了。我機器的環境是:
gsl-1.15
ruby-1.9.3p125
其中 gsl 是使用 brew install gsl 安裝的,安裝了最新的1.15版本。執行 gem install gsl 時的一條錯誤信息是:
conflicting types for 『gsl_matrix_complex_equal』
於是順著這條錯誤信息 Google ,發現很多人都遇到這個問題了。有人說,應該安裝 gsl-1.14 而不是 gsl-1.15 。而最新的 gem 版本為 1.14.7 。看來很可能是版本不兼容。
所以我需要給 gsl 降級。 由於 gsl 是通過 Homebrew 安裝的,所以需要找到安裝特定版本液信工具的方法。於是在 Stackoverflow 上找到了方法。其實很簡單:
1. 查看 brew 支持哪些版本的 gsl
$ brew versions gsl
1.15 git checkout 164c57f /usr/local/Library/Formula/gsl.rb
1.14 git checkout 83ed494 /usr/local/Library/Formula/gsl.rb
1.13 git checkout b0b2584 /usr/local/Library/Formula/gsl.rb
非常幸運,1.14 包括在內。
2. 進入 brew 所在的git倉庫
cd `brew --prefix`
3. 復制粘貼剛才 brew versions sql 命令的提示。執行
git checkout 83ed494 /usr/local/Library/Formula/gsl.rb
4. 此時安裝使用 brew install gsl 會提示錯誤
Error: gsl-1.15 already installed
To install this version, first `brew unlink gsl'
因此需要先取消之前的鏈接,執行
brew unlink gsl
提示
Unlinking /usr/信稿local/Cellar/gsl/1.15... 16 links removed
5. 安裝成功
brew install 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 的一些體會。這個庫確實很實用,碰租有不少地方值得挖掘。對於要常常在程序中使用到高等數學知識的程序員,是個不可多得的好東西。
Ⅳ 求教如何在visual studio201x上使用GNU的gsl庫
我用著沒有問題啊,最新的6.3版本,鏈接的是openBLAS,不過我比較偷懶枯謹,沒有把庫目錄什迅橋么的設置一遍,反正只編譯64位的程序,直接把一眾dll、lib添加進項目了事,你可以參考下我的食用方法: 1. Armadillo庫本身:這個還是畝敗猛要設置進VC++目錄的,...
Ⅳ opencv中的gsl庫怎麼安裝
gsl的安裝方法
gsl在dev-c++下的移植:
(2)安裝gsl,安裝後在安裝目錄下將有如下目錄
\contrib\gsl-1.8 一些說明文件
\bin 二進制文件
libgsl.dll gsl的動態鏈接庫(基於gcc的正式版本)
libgsl_d.dll gsl的動態鏈接庫(基於gcc的調試版本)
libgslcblas.dll cblas的動態鏈接庫(基於gcc的正式版本)
libgslcblas_d.dll cblas的動態鏈接庫(基於gcc的調試版本)
gsl-histogram.exe 用於計算數據直方圖的程序
gsl-randist.exe 用於生成服從指定分布數據的程序
\lib 庫文件
libgsl.a gsl的靜態鏈接庫(基鉛段於gcc的正式版本)
libgsl_d.a gsl的靜態鏈接庫(基於gcc的調試版本隱蔽)
libgslcblas.a cblas的靜態鏈接庫(基於gcc的正式版本)
libgslcblas_d.a cblas的靜態鏈接庫(基於gcc的調試版本)
libgsl_dll.a libgsl.dll的gcc輸入庫
libgsl_d_dll.a libgsl_d.dll的gcc輸入庫
libgslcblas_dll.a libgslcblas.dll的gcc輸入庫
libgslcblas_d_dll.a libgslcblas_d.dll的gcc輸入庫
libgsl.def 輸出libgsl.dll的定義
libgslcblas.def 輸出libgslcblas.dll的定義
\doc 有關文檔
\info
\man1
\man3
各種格式的gsl幫助文件
\include\gsl 頭文件
gsl include files
其中使用到的主要有bin,lib,include\gsl下的文件
(3)設置dev-c++編譯環灶激州境,有兩種方式:
將gsl安裝目錄下的bin下libgsl.dll,libgslcblas.dll復制到dev-c++安裝目錄下的bin目錄下
lib下libgsl.a,libgslcblas.a復制到dev-c++安裝目錄下的lib目錄下
include下的整個gsl文件夾復制到dev-c++安裝目錄下的include目錄下.
Ⅵ 如何編譯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的移植工作就完成了。
Ⅶ 在VC中添加其他支持庫和頭文件的問題
如果都 .h/.lib都設置好了,編譯是沒有問題派清核的。.dll設置好了連接運行是正頌沒有問題的。
(不知道你的GSL包的版本對不對,是不是fow vc 版本的,如果不是,請下載一個vc 版本的)。
一般第三方開發包在VC中使用的時候,需要預定義宏的設置(工程項目設置裡面添加)。GSL好像是 GSL_DLL。你搜索一下編譯錯塵掘誤提示的符號名稱,看在哪個頭文件裡面,然後在這個頭文件的前面找預定義宏,加到VC工程的項目設置裡面
有個GSL的文章,你看看
http://hi..com/yilinghl/blog/item/038ee5241f846f3a8644f9bf.html
Ⅷ Cannot open include file: 'gsl/gsl_sf.h'
把gsl_sf.h放到VC98的include目錄下得gsl目錄試試
Ⅸ gsl函數庫中的h文件的作用。比如說gsl_block_uint.h,gsl_matrix_ushort.h等等,我qq是405501625.
h文件中放的是變數、函數的聲明,只有引用了帶有改變數、函數聲明的h文件,才能用該變數、函數
Ⅹ 如何學習c++
學習C++,這里有比較全面的七個步驟:
一、定義程序的目標
首先,沒有目標的工作都是「耍流氓」,所以在動手寫程序之前,要先在腦子里有清晰的思路。明確自己想做什麼,需要哪些信息,要進行哪些計算和控制,以及程序應該要報告什麼信息。這些都思考清楚後,才能進行下一步。
二、設計程序
對這項工作有概念性的認識後,就應該考慮如何用程序來完成它。例如,用戶界面應該是怎樣的?如何組織程序?目標用戶是誰?准備花多長時間來完成這個程序?
除此之外,還要決定在程序中如何表示數據,以及用什麼方法處理數據。學習C語言之初,遇到的問題都很簡單。但是,隨著要處理的情況越來越復雜,需要決策和考慮的方面也越來越多。通常,選擇一個合適的方式表示信息可以更容易地設計程序和處理數據。
三、編寫代碼
設計好程序後,就可以著手編寫代碼了。這一步就是把你設計的程序翻譯成C語言。一般而言,使用文本編輯器創建源代碼文件。該文件中內容就是你翻譯的C語言代碼。程序清單1.1是一個C源代碼的示例。在這一步驟中,應該給自己編寫的程序添加文字注釋。最簡單的方式是使用C的注釋工具在源代碼中加入對代碼的解釋。
四、編譯
接下來的這一步是編譯源代碼。編譯器是把源代碼轉換成可執行代碼的程序。可執行代碼是用計算機的機器語言表示的代碼。這種語言由數字碼表示的指令組成。也就是說,不同的計算機使用不同的機器語言方案。C編譯器負責把C代碼翻譯成特定的機器語言。此外,C編譯器還將源代碼與C庫的代碼合並成最終的程序。最後就可以生成一個用戶可以運行的可執行文件,其中包含著計算機能理解的代碼。
編譯器還會檢查C語言程序是否有效。如果C編譯器發現錯誤,就不生成可執行文件並報錯。理解特定編譯器報告的錯誤或警告信息是程序員要掌握的另一項技能。
五、運行程序
傳統上,可執行文件是可運行的程序。在常見環境(包括Windows命令提示符模式、UNIX終端模式和Linux終端模式)中運行程序要輸入可執行文件的文件名,而其他環境可能要運行命令或一些其他機制。例如,在Windows和Macintosh提供的集成開發環境(IDE)中,用戶可以在IDE中通過選擇菜單中的選項或按下特殊鍵來編輯和執行C程序。最終生成的程序可通過單擊或雙擊文件名或圖標直接在操作系統中運行。
六、測試和調試程序
程序運行的過程中,可能會出現運行錯誤,計算機行話叫作bug,然後就要查找並修復程序錯誤,這個過程叫調試。你可能會犯基本的設計錯誤,可能錯誤地實現了一個好想法,可能忽視了輸入檢查導致程序癱瘓,可能會把圓括弧放錯地方,可能誤用C語言或打錯字等等。有bug是很正常的,不必緊張,現在我們可以進入下一步。
七、維護和修改代碼
調試完程序後,就要修改程序。例如,用戶輸入以Zz開頭的姓名時程序出現錯誤、你想到了一個更好的解決方案、想添加一個更好的新特性,或者要修改程序使其能在不同的計算機系統中運行,等等。如果在編寫程序時清楚地做了注釋並採用了合理的設計方案,維護和修改代碼就是一件很容易的事情了。