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

初识Linux · 动静态库(incomplete)

目录

前言:

静态库

动态库


前言:

继上文,我们从磁盘的理解,到了文件系统框架的基本搭建,再到软硬链接部分,我们开始逐渐理解了为什么运行程序需要./a.out了,这个前面的.是什么我们也知道了。

可是我们在文件权限部分,我们已经见识了最基本的库,知道了Linux的动态库的后缀是.so 静态库是.a,Windows系统的动态库是.dll,静态库是.lib。并且我们知道库的名字要去掉前缀,去掉后缀。这是我们最开始的对于库的认识。

那么我们是否是否使用过库呢?

当然是使用过的,在使用C语言C++的时候,我们使用的头文件所在的库,比如std库,我们肯定是使用过的。那么库的作用是什么呢?

在stl容器里面,都是有基本函数的接口,比如vector的push_back,我们使用的都是对应的接口,那么具体的实现在哪里呢?

具体的实现肯定是放在.cc文件,经过编译器编译成了.o文件,经过糅合起来,形成了最终的库。

现在我们就对于静态库,动态库,我们从是什么,为什么,怎么办三个方面来谈论。


静态库

为了生成静态库,我们先模仿实现多个.c文件多个.h文件:

然后在里面写入对应的代码:

#pragma once 
int Sub(int x,int y);#include "sub.h"int Sub(int x,int y)
{return x - y;
}#include "add.h"int Add(int x,int y)
{return x + y;
}#pragma once
int Add(int x,int y);

我们创建了两个.c文件和两个.h文件。

那么我们在test.c文件里面进行测试。

#include <stdio.h>
#include "add.h"
#include "sub.h"int main()
{printf("a + b = %d\n", Add(10,20));printf("a - b = %d\n", Sub(10,20));return 0;
}

如果我们直接编译的话,肯定是编不过去的,因为真正的实现是在.c里面:

那么我们不妨先生成.o文件,为了静态库做准备:

然后使用命令ar生成静态库:

其中replace 是r,c是create,如果没有就创建。

这是对于静态库的创建,libmyc.a就是我们创建的静态库,但是实际上,myc才是这个静态库的名字。

可是对于库的使用来说,比如C语言提供多个库,我们都是#include <stdio.h>的,当使用的时候,编译器会去安装好的库里面查找,所以这里面肯定存在路径问题。

使用L l选项可以解决该问题。

动态库

动态库部分后面介绍吧。

这里还涉及附加问题,后续更新。


感谢阅读!

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

相关文章:

  • 华为OD机试 - 匿名信(Java 2024 E卷 100分)
  • 通过rancher2.7管理k8s1.24及1.24以上版本的k8s集群
  • text-align的属性justify
  • 使用python自制桌面宠物,好玩!——枫原万叶桌宠,可以直接打包成exe去跟朋友炫耀。。。
  • 使用 ASP.NET Core 8.0 创建最小 API
  • 气候服务平台ClimateSERV2.0简介(python)
  • Docker | centos7上对docker进行安装和配置
  • React--》掌握Valtio让状态管理变得轻松优雅
  • python爬虫百度图片
  • 前端开发:Vue中数据绑定原理
  • CTF-RE 从0到N: TEA
  • python 使用PIL获取图片长宽
  • 【Nas】X-DOC:搞机之PVE部署All In One(黑群晖NAS 软路由OpenWrt Docker Win10远程桌面)
  • linux 驱动源码分析的理解。
  • 鸿蒙-任务栏右击退出 或 UIAbility窗口关闭,怎么弹框拦截
  • 【C++进阶篇】——STL的简介
  • 信息安全工程师(70)网络攻击陷阱技术与应用
  • Web保存状态的手段(Session的使用)
  • 第五十四章 安全元素的详细信息 - DerivedKeyToken 详情
  • kafka 的高可用机制是什么?
  • 4.1.3 网站通信技术
  • Java-图书管理系统
  • python如何通过json以及pickle读写保存数据
  • 【SPIE出版,EI检索稳定】2024年人机交互与虚拟现实国际会议(HCIVR 2024,11月15-17日)
  • Linux vim编辑器
  • 普推知产:申请商标名称从4字改成3字下了初审!
  • Flink 状态精准一次性特性
  • 算法笔记day08
  • 在Selenium中有哪些元素对象操作方法?( ̄﹃ ̄)
  • sqli-labs靶场安装以及刷题记录-docker