Linux共享库库+例子

1.什么是共享库?有什么优点?和静态库有什么区别?

        Linux动态库(Dynamic Link Library,缩写为DLL)是一种在Linux系统中使用的共享库(Shared Library)。与静态库不同,动态库在程序执行时被动态加载到内存中,并且可以被多个程序共享使用。

优点:

                1.节省内存:多个程序可以共享使用同一个动态库,避免重复加载相同的代码和数据,减少内存占用。

                2.灵活更新:当动态库更新时,只需要替换库文件,并重新加载程序,而不需要重新编译整个程序,方便更新和维护。

                3.运行时扩展:程序可以通过加载动态库来增加功能和扩展性,通过动态库中提供的接口调用其功能。

                4.在进行编译时,不会将动态库编译成为二进制文件。但是静态库不可以。

2.如何生成自己的动态库呢?

        

1.编译源代码文件为目标文件(Object File)

2.将目标文件添加到共享库文件中

 

执行完之后会生成一个.so文件。

3.将.so文件移动到/usr/lib路径下(管理员权限)

4.写一个头文件包含max.c和min.c的声明,后移动到/usr/include路径下

 5.我们现在就可以编译并运行我们的test2.c文件了

 

3.附一下代码

//max.c
int max(int a, int b) { return a > b ? a : b; }//min.c
int min(int a, int b) { return a > b ? b : a; }//myinclude.h
int min(int a, int b);
int max(int a, int b)//test2.c
#include <stdio.h>
#include<myinclude.h>
int main() { printf("%d,%d", max(0, 99), min(0, 99)); }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/9238.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

飞机乘坐流程/怎么坐飞机

飞机乘坐流程/怎么坐飞机 编写原因对象人员经历背景飞机乘坐流程流程梗概订票去往机场办理登记牌/托运行李安检登机转机 飞行中下机 后记 编写原因 从上家单位裸辞&#xff0c;大概率下次不会找频繁出差的工作了&#xff0c;而日常出行应该也不会考虑飞机这种交通工具&#xf…

结构型设计模式之外观模式【设计模式系列】

系列文章目录 C技能系列 Linux通信架构系列 C高性能优化编程系列 深入理解软件架构设计系列 高级C并发线程编程 设计模式系列 期待你的关注哦&#xff01;&#xff01;&#xff01; 现在的一切都是为将来的梦想编织翅膀&#xff0c;让梦想在现实中展翅高飞。 Now everythi…

剑指YOLOv8改进最新MPDIoU损失函数:超越现有多种G/D/C/EIoU,23年7月首发论文,高效准确的边界框回归的损失

💡本篇内容:剑指YOLOv8改进最新MPDIoU损失函数:超越现有多种G/D/C/EIoU,23年7月首发论文,高效准确的边界框回归的损失 💡🚀🚀🚀本博客 改进源代码改进 适用于 YOLOv8 按步骤操作运行改进后的代码即可 💡:重点:该专栏《剑指YOLOv8原创改进》只更新改进 YOLO…

雷达信号处理自学总结(持续更新)

傅里叶变换的频率分辨率 频率分辨率 采样频率 信号长度 频率分辨率 \frac{采样频率 }{信号长度} 频率分辨率信号长度采样频率​ 可用numpy模块的fft.fftfreq函数求出傅里叶变换的频率分辨率。 https://numpy.org/doc/stable/reference/generated/numpy.fft.fftfreq.html

若依vue -【 44】

44 服务监控讲解 1 需求 显示CPU、内存、服务器信息、Java虚拟机信息、磁盘状态的信息 2 前端 RuoYi-Vue\ruoyi-ui\src\views\monitor\server\index.vue <script> import { getServer } from "/api/monitor/server";export default {name: "Server&quo…

JS(es6)同时给多个变量赋值

在ES6中&#xff0c;可以使用解构赋值语法同时给多个变量赋值。解构赋值语法可以从数组或对象中提取值&#xff0c;并将其赋给多个变量。 1. 数组解构赋值&#xff1a; const [var1, var2, var3] [1, 2, 3] console.log(var1); // 输出 1 console.log(var2); // 输出 2 cons…

前端技术搭建(动态图片)拖拽拼图!!(内含实现原理)

文章目录 前端技术搭建&#xff08;动态图片&#xff09;拖拽拼图(内含实现原理)导言功能介绍效果演示链接&#xff08;觉得不错的&#xff0c;请一键三连嘤嘤嘤&#xff09;项目目录页面搭建css样式设置工具函数游戏实现逻辑 开源地址总结 前端技术搭建&#xff08;动态图片&a…

什么是tcp rst以及什么时候产生?

rst包是仅在header control bits设置rst的空payload包&#xff0c;用于强制关闭tcp连接。常在以下场景发送 远程主机没有监听该端口 远程主机强迫关闭了一个现有连接。比如服务端进程崩溃后重启会向之前连接发送rst 相比于四次挥手的fin&#xff0c;rst是在异常情况下的无条…

SpringBoot整合JavaMail

SpringBoot整合JavaMail 简单使用-发送简单邮件 介绍协议 导入坐标 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId></dependency>添加配置 spring:mail:host: smtp.qq.co…

企业邮箱搭建费用,smtp邮件系统怎么搭建?验证码邮件群发,有哪些推荐邮件群发系统?

您是否为没法发smtp群发邮件而苦恼&#xff0c;别担心&#xff0c;这里将给大家介绍一下什么是企业邮箱&#xff0c;邮局系统怎么搭建&#xff0c;验证码邮件群发&#xff0c;有哪些推荐邮件群发系统&#xff1f; 企业邮箱搭建&#xff1a;成本和考量因素 在如今数字化的商业…

Wonderful Sql

Wonderful Sql 一. 初识数据库 练习题 1.1 编写一条 CREATE TABLE 语句&#xff0c;用来创建一个包含表 1-A 中所列各项的表 Addressbook &#xff08;地址簿&#xff09;&#xff0c;并为 regist_no &#xff08;注册编号&#xff09;列设置主键约束 表1-A 表 Addressbook…

java代码审计6之ssrf

文章目录 1、java支持的网络请求协议&#xff1a;2、Java 中能发起⽹络请求的类2.1、仅⽀持 HTTP/HTTPS 协议的类2.2、⽀持 sun.net.www.protocol 所有协议的类2.3、审计关键词 3、靶场3.1、漏洞代码13.2、ftp协议读取技巧3.3、无回显之探测内网3.4、无回显之探测文件 之前的文…

el-input 文本框 输入数字校验

目录 1. 输入整数 2. 输入整数和小数 3. 输入两位小数 1. 输入整数 <el-inputv-model"scopeRows.row.inWarehouseRow.Quantity"type"number"blur"getRowData(scopeRows.row.inWarehouseRow)"oninput"valuevalue.replace(/^0|[^0-9]/g…

【前缀和】238. 除自身以外数组的乘积

238. 除自身以外数组的乘积 解题思路 前缀与后缀的思路对于给定索引i&#xff0c;将它左边的所有数字乘积乘以右边所有数字的乘积初始化两个数组L R计算L[i] L[i - 1] * nums[i - 1] 也就是左侧所有数字的乘积计算R[i] R[i 1] * nums[i 1] 也就是右侧所有数字的成绩计算L…

Ceph概述、准备ceph部署环境、cephadm概述、安装Ceph集群、ceph块存储、存储池、rbd镜像管理、ceph客户端配置

day03 day03ceph概述部署Ceph节点准备cephadm准备基础环境安装ceph实现块存储块存储基础存储池镜像ceph客户端 ceph概述 ceph可以实现的存储方式&#xff1a; 块存储&#xff1a;提供像普通硬盘一样的存储&#xff0c;为使用者提供“硬盘”文件系统存储&#xff1a;类似于NFS…

cst 导出z方向电场分布图的后处理方式(matlab origin)?

文章目录 一、使用Matlab进行后处理&#xff1a;二、使用Origin进行后处理 当我们使用Matlab或Origin对CST导出的Z方向电场分布图进行后处理时&#xff0c;可以这样做&#xff1a; 一、使用Matlab进行后处理&#xff1a; 1. 导入数据&#xff1a; 使用Matlab的文件读取函数&am…

【数据分析专栏之Python篇】二、Jupyer Notebook安装配置及基本使用

文章目录 前言一、Jupter Notebook是什么1.1 简介1.2 组成部分1.3 Jupyter Notebook的主要特点 二、为什么使用Jupyter Notebook?三、安装四、Jupyter Notebok配置4.1 基本配置4.2 配置开机自启与后台运行4.3 开启代码自动补全 五、两种键盘输入模式5.1 编辑模式5.2 命令模式5…

13.python设计模式【策略者模式】

内容&#xff1a;定义一系列的算法&#xff0c;把它们一个一个的封装起来&#xff0c;并且使它们可以相互替换。本模式使得算法可独立于使用它的客户而变化。角色&#xff1a; 抽象策略&#xff08;Strategy&#xff09;具体策略&#xff08;ConcreteStrategy&#xff09;上下文…

探究Spring Bean的六种作用域:了解适用场景和使用方式

这里写目录标题 单例&#xff08;Singleton&#xff09;作用域&#xff1a;原型&#xff08;Prototype&#xff09;作用域&#xff1a;请求&#xff08;Request&#xff09;作用域&#xff1a;会话&#xff08;Session&#xff09;作用域&#xff1a;全局&#xff08;applicati…

【vue3+ts】TypeError: Cannot read properties of undefined (reading ‘commit‘)

项目场景&#xff1a; <script lang"ts"> import { defineComponent, reactive, ref } from vue import { useStore } from vuex export default defineComponent({name: Login.vue,components: {},setup () {const onFormSubmit (result: boolean) > {if…