如何生成、調(diào)用linux C++靜態(tài)庫(kù) 動(dòng)態(tài)庫(kù)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
我使用的是ubuntu? 12.04 編程環(huán)境是eclipse 呵呵,閑話少敘開(kāi)始說(shuō)靜態(tài)庫(kù)的生成設(shè)置吧
三個(gè)步驟
1.在一個(gè)頭文件中聲明需要導(dǎo)出的函數(shù)的函數(shù)
2.在一個(gè)源文件當(dāng)中實(shí)現(xiàn)需要導(dǎo)出的函數(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中的設(shè)置呢就是在properity->c++ build->Settings->building? artfact中選擇 static library即可!
現(xiàn)在我們說(shuō)說(shuō),靜態(tài)庫(kù)的調(diào)用,靜態(tài)庫(kù)呢,在linux當(dāng)中是.a文件,我們需要知道的是
1.聲明需要調(diào)用的函數(shù)
2.設(shè)置eclipse當(dāng)中的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)庫(kù)就成功了,靜態(tài)庫(kù)的使用,會(huì)將代碼寫在可執(zhí)行文件當(dāng)中,所以在發(fā)布的時(shí)候是不需要*.a文件的
現(xiàn)在說(shuō)下動(dòng)態(tài)庫(kù)的使用,其實(shí)動(dòng)態(tài)庫(kù)的生成呢,是靜態(tài)庫(kù)一樣的,我們只需要在選擇的時(shí)候選擇 share object就可以了
只是在使用的時(shí)候有所不同
需要在使用的時(shí)候選擇 properity->C++ BUILD->Settings->ToolSettings ->Gross ++ Linker->libraries 上面Libraries中加入的是動(dòng)態(tài)庫(kù)*.so文件的名稱
下面則是該動(dòng)態(tài)庫(kù)的路徑,這樣就把動(dòng)態(tài)庫(kù)添加好了,使用時(shí)和靜態(tài)庫(kù)一樣的是,我們需要重新聲明動(dòng)態(tài)庫(kù)中調(diào)用的函數(shù)名稱。