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还是可以正常执行,这是静态链接库的特性,也就是所谓的静态链接。
相关文章:
Linux下C++静态链接库的生成以及使用
目录 一.前言二.生成静态链接库三.使用静态链接库 一.前言 这篇文章简单讨论一下Linux下如何使用gcc/g生成和使用C静态链接库(.a文件)。 二.生成静态链接库 先看下目录结构 然后看下代码 //demo.h#ifndef DEMO_H #define DEMO_H#include<string&g…...
【8月EI会议推荐】第四届区块链技术与信息安全国际会议
一、会议信息 大会官网:http://www.bctis.nhttp://www.icbdsme.org/ 官方邮箱:icbctis126.com 组委会联系人:杨老师 19911536763 支持单位:中原工学院、西安工程大学、齐鲁工业大学(山东省科学院)、澳门…...
2024年【甘肃省安全员B证】考试资料及甘肃省安全员B证模拟试题
题库来源:安全生产模拟考试一点通公众号小程序 2024年甘肃省安全员B证考试资料为正在备考甘肃省安全员B证操作证的学员准备的理论考试专题,每个月更新的甘肃省安全员B证模拟试题祝您顺利通过甘肃省安全员B证考试。 1、【多选题】5kW以上电动机开关箱中电…...
结合el-upload上传组件,验证文件格式及大小
结合el-upload上传组件,验证文件格式及大小 效果如下: 代码如下: upgradeFirmwareInfo.vue页面 <template><div><el-dialog title"新增固件升级包" :visible.sync"dialogFormVisible"top"7vh&qu…...
配置php-fpm服务
nginx(unix domain socket方式) server {listen 80;#root /test/php/publiclocation / {#URL重写 例如隐藏index.phpif (!-f $request_filename) {rewrite ^(.*)$ /index.php?s/$1 last;break;}}location ~ [^/]\.php(/|$) {#try_files $uri 404;fastcgi_index index.php;…...
科普文:Linux系统安全加固指南
本指南仅关注安全性和隐私性,而不关注性能,可用性或其他内容。 列出的所有命令都将需要root特权。以“$”符号开头的单词表示一个变量,不同终端之间可能会有所不同。 选择正确的Linux发行版 选择一个好的Linux发行版有很多因素。 避免分发…...
MFC开发,自定义消息
在MFC开发中,主要核心机制就是消息机制。QT与之类似的机制就是信号与槽。QT中的信号与槽是非常容易自定义的,MFC也是如此,自定义也是比较方便,况且自定义消息或者控件在整个GUI图形化界面开发中也是非常重要的部分,上篇…...
如何在 SpringBoot 中优雅的做参数校验?
一、故事背景 关于参数合法性验证的重要性就不多说了,即使前端对参数做了基本验证,后端依然也需要进行验证,以防不合规的数据直接进入服务器,如果不对其进行拦截,严重的甚至会造成系统直接崩溃! 本文结合…...
Godot入门 03世界构建1.0版
在game场景,删除StaticBody2D节点,添加TileMap节点 添加TileSet图块集 添加TileSet源 拖动图片到图块,自动创建图块 使用橡皮擦擦除。取消橡皮擦后按住Shift创建大型图块。 进入选择模式,TileMap选择绘制,选中图块后在…...
GitHub每日最火火火项目(7.26)
1. 项目名称:meta - llama / llama3 项目介绍:这是 Meta Llama 3 的官方 GitHub 站点。目前尚不清楚该项目的具体功能和特点,但从名称推测,它可能与 Llama 3 模型相关,或许涉及到该模型的开发、训练或应用等方面。 项…...
微服务实践和总结
H5原生组件web Component Web Component 是一种用于构建可复用用户界面组件的技术,开发者可以创建自定义的 HTML 标签,并将其封装为包含逻辑和样式的独立组件,从而在任何 Web 应用中重复使用。 <!DOCTYPE html> <html><head…...
Spring Boot中的策略模式:优雅地处理不同商品类型的订单
引言 在开发复杂的业务系统时,我们经常会遇到需要根据不同条件执行不同逻辑的情况。例如,在电商平台中,可能需要根据商品的不同类型(如电子产品、服装、食品等)来执行不同的业务逻辑,比如不同的库存管理、…...
django_创建菜单(实现整个项目的框架,调包)
文章目录 前言代码仓库地址在线演示网址启动网站的时候出现错误渲染路径的一些说明文件结构网页显示一条错误路由顺序js打包出现问题的代码函数没有起作用关于进度开发细节显示不了图片梳理一下函数调用的流程修改一些宽度参数classjs 里面的一些细节让三个按钮可以点击设置按钮…...
最新全新UI异次元荔枝V4.4自动发卡系统源码
简介: 最新全新UI异次元荔枝V4.4自动发卡系统源码 更新日志: 1增加主站货源系统 2支持分站自定义支付接口 3目前插件大部分免费 4UI页面全面更新 5分站可支持对接其他分站产品 6分站客服可自定义 7支持限定优惠 图片: 会员中心截图&…...
PyTorch安装CUDA标准流程(可解决大部分GPU无法使用问题)
最近一段时间在研究PyTorch中的GPU的使用方法,之前曾经安装过CUDA,不过在PyTorch中调用CUDA时无法使用。考虑到是版本不兼容问题,卸载后尝试了其他的版本,依旧没有能解决问题,指导查阅了很多资料后才找到了解决方案。 …...
C++从入门到起飞之——初始化列表类型转换static成员 全方位剖析!
🌈个人主页:秋风起,再归来~🔥系列专栏:C从入门到起飞 🔖克心守己,律己则安 目录 1、初始化列表 2、 类型转换 3. static成员 4、完结散花 1、初始化列表 • 之前我们实现构造函数…...
PHP框架简介
PHP是一种广泛使用的开源脚本语言,主要用于Web开发,它可以创建动态交互式Web页面。而PHP框架则是一套用于开发Web应用程序的工具和库的集合,它可以帮助开发者更高效地编写PHP代码,提高开发速度和代码的可维护性。 理解PHP框架&am…...
微信小程序-粘性组件
再次完善:将区域设置为粘性时,会脱离原有文档,使得出现下方页面突然遮盖一部分,不平滑 解决:给出一个新的空白区域,宽高与粘性区域一致,wx:if 控制其显示 /****************/ 后续补充&#…...
微服务注册中心
目录 1.微服务的注册中心 1.1 注册中⼼的主要作⽤ 1.2 常⻅的注册中⼼ 2.nacos简介 2.1 nacos实战⼊⻔ 2.2.1 搭建nacos环境 2.2.2 将商品微服务注册到nacos 3.服务调⽤Ribbon⼊⻔ 3.1 Ribbon概述 3.1.1 什么是Ribbon 3.1.2 Ribbon的主要作⽤ 3.2.2 ⼯程改造 4.服务…...
HDU1032——The 3n + 1 problem,HDU1033——Edge,HDU1034——Candy Sharing Game
目录 HDU1032——The 3n 1 problem 题目描述 运行代码 代码思路 HDU1033——Edge 题目描述 运行代码 代码思路 HDU1034——Candy Sharing Game 题目描述 运行代码 代码思路 HDU1032——The 3n 1 problem 题目描述 Problem - 1032 运行代码 #include <iostr…...
“梦想、汗水、坚持”2026 SNH48 GROUP年度青春盛典5月30日正式启动
“十三而砺,向新而行。”中国大型青春女团SNH48 GROUP运营方上海丝芭文化传媒集团有限公司即日宣布:2026 SNH48 GROUP第十三届年度青春盛典大型系列活动将于5月30日正式启动,本届年度青春盛典颁奖典礼暨汇报演唱会定档8月8日,落地…...
开源、有文档、能上线的 .NET + Vue 通用权限系统
前言在日常项目开发中,权限管理几乎是每个系统都绕不开的基础模块。从用户登录、菜单控制到数据隔离,一套稳定、灵活、可扩展的权限体系,往往决定了整个项目的成败。然而,从零开始搭建这样的平台,不仅耗时耗力…...
思源宋体CN终极指南:7种字重免费商用中文字体快速上手完整教程
思源宋体CN终极指南:7种字重免费商用中文字体快速上手完整教程 【免费下载链接】source-han-serif-ttf Source Han Serif TTF 项目地址: https://gitcode.com/gh_mirrors/so/source-han-serif-ttf 还在为商业项目中文字体版权问题而烦恼吗?思源宋…...
重磅!国家首部NAD⁺抗衰共识发布,这11条建议必读!
2026年4月,国内首个《NAD⁺在衰老相关疾病中的作用及临床应用中国专家共识(2026版)》正式发布!这份由中华医学会老年医学分会牵头、汇聚全国衰老医学、代谢病、心血管病及神经病学等领域权威专家共同制定的国家级共识,…...
API管理平台能力与数据盘点
API管理平台是现代企业IT架构中的核心组件,承担着接口设计、发布、运维、安全管控及生态开放等关键职责。不同平台在功能深度、性能指标和行业实践上各有积累。本文基于公开资料,对五款API管理平台的核心能力与关键数据进行客观梳理,以表格与…...
企业微信社群运营太耗人力?API自动化方案实战分享
通过 QiWe API RPA 自动化能力,实现企业微信社群从拉群、维护到触达的全流程自动化运营。社群运营在私域体系中很重要,但也是最“吃人力”的环节之一:拉群、邀请客户全靠人工群公告、活动通知重复发送群成员管理耗时且容易出错多个社群需要反…...
Git Common Errors
Git Common Errors 1. 这篇文章解决什么问题? Git 报错时,最容易让人慌的不是错误本身,而是不知道它在说哪一层出了问题。 常见错误包括: 1. not a git repository 2. remote origin already exists 3. failed to push some r…...
2024年第二季度:10款必装的Hyper终端增强插件终极推荐
2024年第二季度:10款必装的Hyper终端增强插件终极推荐 【免费下载链接】awesome-hyper 🖥 Delightful Hyper plugins, themes, and resources 项目地址: https://gitcode.com/gh_mirrors/aw/awesome-hyper Hyper终端作为一款基于Electron构建的现…...
Boss-Key终极指南:一键隐藏窗口,打造高效安全的办公环境
Boss-Key终极指南:一键隐藏窗口,打造高效安全的办公环境 【免费下载链接】Boss-Key 老板来了?快用Boss-Key老板键一键隐藏静音当前窗口!上班摸鱼必备神器 项目地址: https://gitcode.com/gh_mirrors/bo/Boss-Key 在数字化办…...
ARM CoreSight ROM Tables解析与调试实践
1. ARM CoreSight ROM Tables基础解析在嵌入式调试领域,ARM CoreSight架构提供了一套完整的调试与追踪解决方案。作为该架构的关键组成部分,ROM Tables扮演着系统调试资源的"目录"角色。想象一下走进一个巨大的图书馆,ROM Tables就…...
