一 引言
《一文说清:windows下C++静态库的封装和调用》中说了:
静态库允许开发者在多个项目中复用代码,减少重复劳动,并增强程序的可维护性。并讲述了windows环境下创建、封装以及调用C++静态库的过程。
本文则描述了,如何在Linux环境下创建、封装以及调用C++静态库的过程,并附上源代码
编译环境:RedHat
二 静态库的封装
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文件内容如下:
#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 编译成目标文件
命令如下:
g++ -o TestLib.o –c TestLib.cpp
此时,目录下多了一个TestLib.o文件。
3 编译成静态库
命令如下:
ar –rc lib.a TestLib.o
其中lib.a就是期望生成的静态库文件。
三 静态库的调用
1 编写测试代码
文件参考TestCallLib.cpp。
#include "TestLib.h"int main()
{TestLib testLib;testLib.show();return 0;
}
3 拷贝静态库和头文件
头文件为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
静态库文件为上述生成的lib.a。
3 连同库一起编译
命令为:
g++ -o test TestCallLib.cpp ./lib.a
test表示要生成的可执行文件。
TestCallLib.cpp是调用静态库的主程序。
./lib.a是当前目录下的静态库文件。
编译后得到test可执行程序。
4 运行可执行程序
命令如下:
./test
x: 0
y: 0
可以看到运行结果正确。
四 小结
本文主要讲了如下内容:
- 封装静态库并生成静态库。
- 创建测试调用代码。
源码及工程,已经上传资源,感兴趣的可以下载:
Linux环境下,关于C++静态库的封装和调用代码