如何生成、調(diào)用linux C++靜態(tài)庫 動態(tài)庫
我使用的是ubuntu? 12.04 編程環(huán)境是eclipse 呵呵,閑話少敘開始說靜態(tài)庫的生成設置吧
三個步驟
1.在一個頭文件中聲明需要導出的函數(shù)的函數(shù)
2.在一個源文件當中實現(xiàn)需要導出的函數(shù)
3.編譯源文件生成可執(zhí)行函數(shù)
main.h
/* ?*?main.h ?* ?*??Created?on:?Jul?20,?2014 ?*??????Author:?john ?*/ #ifndef?MAIN_H_ #define?MAIN_H_ void?welcome(); void?outstring(const?char*?str); #endif?/*?MAIN_H_?*/
main,cpp
/* ?*?main.cpp ?* ?*??Created?on:?Jul?20,?2014 ?*??????Author:?john ?*/ #include#include"main.h" using?namespace?std; void?welcome() { cout<<"welcome?to?usn"; } void?outstring(const?char*?str) { cout<<str<<endl; }
在eclipse中的設置呢就是在properity->c++ build->Settings->building? artfact中選擇 static library即可!
現(xiàn)在我們說說,靜態(tài)庫的調(diào)用,靜態(tài)庫呢,在linux當中是.a文件,我們需要知道的是
1.聲明需要調(diào)用的函數(shù)
2.設置eclipse當中的C++ BUILD->setings-> tool settings->Cross G++? linker ->Miscellaneous->other objects 添加.o文件目錄即可
main.cpp
//============================================================================ //?Name????????:?static_main.cpp //?Author??????:?da //?Version?????: //?Copyright???:?Your?copyright?notice //?Description?:?Hello?World?in?C++,?Ansi-style //============================================================================ #includeusing?namespace?std; void?welcome(); void?outstring(const?char*?str); int?main()?{ cout?<<?"!!!Hello?World!!!"?<<?endl;?//?prints?!!!Hello?World!!! welcome(); outstring("dsadas"); return?0; }
這樣靜態(tài)庫就成功了,靜態(tài)庫的使用,會將代碼寫在可執(zhí)行文件當中,所以在發(fā)布的時候是不需要*.a文件的
現(xiàn)在說下動態(tài)庫的使用,其實動態(tài)庫的生成呢,是靜態(tài)庫一樣的,我們只需要在選擇的時候選擇 share object就可以了
只是在使用的時候有所不同
需要在使用的時候選擇 properity->C++ BUILD->Settings->ToolSettings ->Gross ++ Linker->libraries 上面Libraries中加入的是動態(tài)庫*.so文件的名稱
下面則是該動態(tài)庫的路徑,這樣就把動態(tài)庫添加好了,使用時和靜態(tài)庫一樣的是,我們需要重新聲明動態(tài)庫中調(diào)用的函數(shù)名稱。