当前位置: 首页 > news >正文

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还是可以正常执行,这是静态链接库的特性,也就是所谓的静态链接。

http://www.lryc.cn/news/407466.html

相关文章:

  • 【8月EI会议推荐】第四届区块链技术与信息安全国际会议
  • 2024年【甘肃省安全员B证】考试资料及甘肃省安全员B证模拟试题
  • 结合el-upload上传组件,验证文件格式及大小
  • 配置php-fpm服务
  • 科普文:Linux系统安全加固指南
  • MFC开发,自定义消息
  • 如何在 SpringBoot 中优雅的做参数校验?
  • Godot入门 03世界构建1.0版
  • GitHub每日最火火火项目(7.26)
  • 微服务实践和总结
  • Spring Boot中的策略模式:优雅地处理不同商品类型的订单
  • django_创建菜单(实现整个项目的框架,调包)
  • 最新全新UI异次元荔枝V4.4自动发卡系统源码
  • PyTorch安装CUDA标准流程(可解决大部分GPU无法使用问题)
  • C++从入门到起飞之——初始化列表类型转换static成员 全方位剖析!
  • PHP框架简介
  • 微信小程序-粘性组件
  • 微服务注册中心
  • HDU1032——The 3n + 1 problem,HDU1033——Edge,HDU1034——Candy Sharing Game
  • 内网对抗-隧道技术篇防火墙组策略HTTP反向SSH转发出网穿透CrossC2解决方案
  • 实战案例:如何用ChatGPT生成适合不同领域的高质量文章
  • 多线程案例-单例模式
  • P6 优化篇 - 数据折线图可视化步骤
  • 优选算法之二分查找(上)
  • JavaScript(16)——定时器-间歇函数
  • VUE中的重点*
  • rabbitmq生产与消费
  • spring-boot3.x整合Swagger 3 (OpenAPI 3) +knife4j
  • SM2隐式证书用户公私钥生成python代码实现
  • IEC104转MQTT网关快速实现了IEC104到MQTT的转换和数据交互