如何生成、調(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ù)名稱。





