網(wǎng)站建設(shè)工作室 杭州營銷推廣與策劃
一 引言
《一文說清:windows下C++靜態(tài)庫的封裝和調(diào)用》中說了:
靜態(tài)庫允許開發(fā)者在多個(gè)項(xiàng)目中復(fù)用代碼,減少重復(fù)勞動(dòng),并增強(qiáng)程序的可維護(hù)性。并講述了windows環(huán)境下創(chuàng)建、封裝以及調(diào)用C++靜態(tài)庫的過程。
本文則描述了,如何在Linux環(huán)境下創(chuàng)建、封裝以及調(diào)用C++靜態(tài)庫的過程,并附上源代碼
編譯環(huán)境:RedHat
二 靜態(tài)庫的封裝
1 編寫頭文件和源文件
包括TestLib.h和TestLib.cpp。
TestLib.h文件如下:
#ifndef TEST_LIB_H
#define TEST_LIB_Hclass TestLib
{
public:TestLib(void);~TestLib(void);void show();private:int x;int y;
};#endif
TestLib.cpp文件內(nèi)容如下:
#include "TestLib.h"#include <iostream>
using namespace std;TestLib::TestLib(void)
{x = 0;y = 0;
}TestLib::~TestLib(void)
{
}void TestLib::show()
{cout << "x: " << x << endl;cout << "y: " << y << endl;
}
2 編譯成目標(biāo)文件
命令如下:
g++ -o TestLib.o –c TestLib.cpp
此時(shí),目錄下多了一個(gè)TestLib.o文件。
3 編譯成靜態(tài)庫
命令如下:
ar –rc lib.a TestLib.o
其中l(wèi)ib.a就是期望生成的靜態(tài)庫文件。
三 靜態(tài)庫的調(diào)用
1 編寫測試代碼
文件參考TestCallLib.cpp。
#include "TestLib.h"int main()
{TestLib testLib;testLib.show();return 0;
}
3 拷貝靜態(tài)庫和頭文件
頭文件為TestLib.h。
TestLib.h如下:
#ifndef TEST_LIB_H
#define TEST_LIB_Hclass TestLib
{
public:TestLib(void);~TestLib(void);void show();private:int x;int y;
};#endif
靜態(tài)庫文件為上述生成的lib.a。
3 連同庫一起編譯
命令為:
g++ -o test TestCallLib.cpp ./lib.a
test表示要生成的可執(zhí)行文件。
TestCallLib.cpp是調(diào)用靜態(tài)庫的主程序。
./lib.a是當(dāng)前目錄下的靜態(tài)庫文件。
編譯后得到test可執(zhí)行程序。
4 運(yùn)行可執(zhí)行程序
命令如下:
./test
x: 0
y: 0
可以看到運(yùn)行結(jié)果正確。
四 小結(jié)
本文主要講了如下內(nèi)容:
- 封裝靜態(tài)庫并生成靜態(tài)庫。
- 創(chuàng)建測試調(diào)用代碼。
源碼及工程,已經(jīng)上傳資源,感興趣的可以下載:
Linux環(huán)境下,關(guān)于C++靜態(tài)庫的封裝和調(diào)用代碼