ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

Linux下C++静态链接库的生成以及使用

2026/9/13 13:53:24 拓冰建站 浏览量
Linux下C++静态链接库的生成以及使用

目录

  • 一.前言
  • 二.生成静态链接库
  • 三.使用静态链接库


一.前言

这篇文章简单讨论一下Linux下如何使用gcc/g++生成和使用C++静态链接库(.a文件)。

二.生成静态链接库

先看下目录结构

在这里插入图片描述

然后看下代码

//demo.h#ifndef DEMO_H
#define DEMO_H#include<string>class Demo
{
public:Demo(void) = default;~Demo(void) noexcept = default;void Print(const std::string& msg);
};#endif // !DEMO_H
//demo.cpp#include"demo.h"#include<iostream>void 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#include<string>#include"demo.h"int 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.a,main还是可以正常执行,这是静态链接库的特性,也就是所谓的静态链接。


欢迎讨论,欢迎指正,欢迎转载。