长沙公司做网站,网站内搜索关键字,亚马逊aws永久免费服务器,案例展示在网站中的作用目录 一.前言二.生成静态链接库三.使用静态链接库 一.前言
这篇文章简单讨论一下Linux下如何使用gcc/g生成和使用C静态链接库#xff08;.a文件#xff09;。
二.生成静态链接库
先看下目录结构 然后看下代码
//demo.h#ifndef DEMO_H
#define DEMO_H#includestring生成和使用C静态链接库.a文件。
二.生成静态链接库
先看下目录结构 然后看下代码
//demo.h#ifndef DEMO_H
#define DEMO_H#includestringclass Demo
{
public:Demo(void) default;~Demo(void) noexcept default;void Print(const std::string msg);
};#endif // !DEMO_H//demo.cpp#includedemo.h#includeiostreamvoid Demo::Print(const std::string msg)
{std::cout msg: msg std::endl;
}很简单的代码就是提供一个打印字符串的接口。
然后我们使用demo.h和demo.cpp来生成静态链接库。
先执行命令g -c demo.cpp -o demo.o生成demo.o然后执行命令ar -cr libdemo.a demo.o生成静态链接库libdemo.a注意静态链接库必须要包含lib前缀另外我们知道Linux下静态链接库的后缀是.a。 我们可以看到已经生成了静态链接库libdemo.a。
三.使用静态链接库
我们看一下怎么使用静态链接库新建main.cpp来使用静态链接库。
先看下目录结构 然后看下代码
//main.cpp#includestring#includedemo.hint main(int argc, char* argv[])
{Demo demo;std::string strMsg(main msg);demo.Print(strMsg);return 0;
}其实就是很简单的代码。
然后执行命令g -o main main.cpp -L. -ldemo使用main.cpp和libdemo.a生成可执行文件main。其中-L.指定要链接的库所在位置是当前目录-ldemo指定要链接的库是libdemo.a。 我们可以看到已经生成了可执行文件main并且可以正常执行而且这个时候如果删除了静态链接库libdemo.amain还是可以正常执行这是静态链接库的特性也就是所谓的静态链接。