波奇学Linux:动静态库

创建静态库

Makefile文件

mymath.c文件

 

mymath.h文件

编译main.c文件

gcc 编译时会把在系统目录中寻找头文件和库文件,文件不在系统目录中用参数

-I 头文件所在文件夹/ -L 库的地址文件夹 -l+除去lib和后缀。

拷贝文件到系统目录即可不用参数

库的安装类似于把头文件和库文件拷贝到系统文件中

库可以提供一个全局变量,如errno就是C语言提供的

如果系统默认动态链接,只提供静态链接,gcc只能提供静态链接。

动态库

动态库在程序运行时被加载到内存,所以产生库的方式和产生可执行程序的命令类似

同时连接动静库

可执行程序链接动态库,必须让加载器和gcc编辑器同时知道位置,方法如下

方法一:把动态库拷贝到系统目录/lib64/usr/lib64

方法二:在系统目录创建软链接指向动态库

方法三:环境变量$LD_LIBRARY_PATH系统搜索动态库路径,将路径添加到这个变量里

方法四:/etc/ld.so.conf.d建立自己的路径动态库路径配置文件,然后重新ldconfig即可。

动静态库区别

静态库相当于把代码拷贝到可执行程序中,当可执行程序链接后,删掉静态库依然可以运行。

动态库相当于程序运行时跳出来运行动态库的代码,动态库删除后,程序不能运行。

动态库在系统中加载之后,会被所有的程序共享,在内存中只会被加载一份。

动态库加载

一份动态库加载到内存中通过页表映射加载到多个进程地址空间的共享区,正文代码运行到库的时候进入共享区。

执行的代码都是在进程地址空间进行执行。

系统在运行时,一定会存在多个动态库,通过os管理起来

动态库的数据会发生写时拷贝,如全局变量。

可执行程序编译完后没有加载到自己内存中有自己的地址。程序可以分区并有地址

平坦模式0~4GB,上面的地址并不是真实的物理地址,是逻辑地址

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

npm run serve启动报错npm ERR! Missing script: “serve“

启动项目的时候用npm run serve发现报了以下的错误 解决方法: 1.一般情况下,这个问题是因为package.json文件里面确实没有 这里没有可能因为你的脚手架版本比较低,如果不想换,可以用 这里面有的 npm run dev去启动也是可以的 n…

RTC时钟

目录 一、STM32F407内部RTC硬件框图,主要由五大部分组成: 二、硬件相关引脚 三、具体代码设置步骤 四、了解其它知识点 一、STM32F407内部RTC硬件框图,主要由五大部分组成: ① 时钟源 (1)LSE:一般我们选择 LSE&am…

Electron实战之进程间通信

进程间通信(IPC)并非仅限于 Electron,而是源自甚至早于 Unix 诞生的概念。尽管“进程间通信”这个术语的确创造于何时并不清楚,但将数据传递给另一个程序或进程的理念可以追溯至 1964 年,当时 Douglas McIlroy 在 Unix…

央视年味大片浓情上映,四位主持人首次因酒“合体”

执笔 | 尼 奥 编辑 | 萧 萧 年,中国人最眷念的味道。年味,独属于中国人的一种文化传承。 14亿中国人,是14亿份不同的中国年味。 五粮浓香 ,赞99 让“年味浓起来”,2月1日,央视新闻上线《年味分之一…

【JavaEE】IP协议

作者主页:paper jie_博客 本文作者:大家好,我是paper jie,感谢你阅读本文,欢迎一建三连哦。 本文于《JavaEE》专栏,本专栏是针对于大学生,编程小白精心打造的。笔者用重金(时间和精力)打造&…

裁员不可怕,可怕的是软件测试行业在发生巨变,而你却原地踏步

🔥 交流讨论:欢迎加入我们一起学习! 🔥 资源分享:耗时200小时精选的「软件测试」资料包 🔥 教程推荐:火遍全网的《软件测试》教程 📢欢迎点赞 👍 收藏 ⭐留言 &#x1…

【Java】Static关键字与类的实例化

关键字:static 作用:主要用于内存管理 范围:可以用在变量、方法、代码块和嵌套类上。java关键字属于类,但不是类的实例。 类的成员变量包括: 【静态变量/类变量】:指被static修饰的成员变量 运行时&#…

Python实现时间序列分析霍尔特季节性平滑模型(Holt算法)项目实战

说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 霍尔特季节性平滑模型是指数平滑技术的一种扩展形式,由E. S. Holt和P. R. Winters分别独立…

C语言系列-编译和链接

🌈个人主页: 会编辑的果子君 💫个人格言:“成为自己未来的主人~” 目录 翻译环境和运行环境 编译环境 预处理(预编译) 编译 词法分析 语法分析 语义分析 汇编 链接 运行环境 翻译环境和运行环境 在 ANSIC 的任何一种实…

【Qt】图形视图框架 之 坐标

QGraphicsView移动图元/场景以及坐标转换 QGraphicsView图形视图框架使用(一)坐标变换 1.继承 QGraphicsProxyWidget 类 虚函数 mousePressEvent、mouseReleaseEvent 的参数 QGraphicsSceneMouseEvent event->pos() 是item坐标系*下的坐标,不是scene场景坐标系下…

鸿蒙新手入门-环境准备问题解析

Node.js版本与API配套关系 由于SDK的部分工具依赖Node.js运行时,推荐使用配套API版本的Node.js,保证工程的兼容性。 匹配关系见下表: API LevelNode.js支持范围API Level≤914.x(≥14.19.1)、16.xAPI Level>914.…

宠物赛道都卷出了哪些花样?媒介盒子分享

如今的宠物市场,已经从让宠物吃饱喝足的基本生理需求,拓展到五花八门的精神需求,与“马斯洛需求定理”高度一致。商家们看到宠物经济的潜力,不再满足于给人类造节,给毛孩子造节也是重中之重,今天媒介盒子就…

【Java EE初阶十六】网络原理(一)

在网络原理中主要学习TCP/IP四层模型中的重点网络协议 1. 应用层 1.1 应用程序与协议 应用层是和程序员接触最密切的; 应用程序:在应用层这里,很多时候都是程序员自定义应用层协议(步骤:1、根据需求,明确…

Faker遭受DDOS攻击,为什么它一直存在,当遇到ddos攻击怎么办?

二十年前中国红客们就在用的DDOS攻击,直到现在还依然是黑客们最爱的攻击方法,为什么它一直存在? Faker各位小伙伴们自然是相当熟悉了,素有着英雄联盟第一人之称的Faker,其所拥有的荣誉让无数职业选手望其项背&#xf…

如何理解CSS的边框宽度?

CSS 边框宽度学习手记 CSS 边框宽度小概念 在CSS的世界里,border-width这个属性真的很实用,它能帮我指定HTML元素四周边框的宽度。这个宽度嘛,可以用像素px、点pt、厘米cm、相对单位em这些来表示,很方便吧!还有呢&am…

Unity3D Shader 素描风格渲染管线实现详解

前言 在游戏开发中,渲染效果是非常重要的一部分,它可以直接影响游戏的视觉效果和玩家的体验。而素描风格的渲染效果是一种非常独特和有趣的风格,可以为游戏增添一种艺术氛围。在Unity3D中,可以通过编写Shader来实现素描风格的渲染…

三坐标测量机|全自主研发,实现高精度三维尺寸测量

三坐标测量机广泛应用在工业生产中,不仅可以提高生产效率,还能保证产品质量的稳定性。 基本原理和作用介绍 三坐标测量机是一种基于三维坐标系的精密测量仪器,可精确测量物体的尺寸、形状和位置。基本原理是利用传感器测量被测物体在三个方…

STM32学习笔记(七) —— DMA传输(MTM)

DMA,全称是Direct Memory Access(直接内存访问)。可以在存储器和存储器之间或者外设和存储器之间传输数据,而不需要CPU的干预,这样可以节省CPU的资源,提高工作效率。 1.功能框图 STM32F103RCT6有两个DMA控…

外汇天眼:8个平台被打击,有的因诈骗被处罚!

上周,澳大利亚证券和投资委员会(ASIC)取消了总部位于悉尼的Brava Capital的澳大利亚金融服务许可证(AFSL),意大利公司和交易委员会CONSOB则将6个非法投资平台网站列入黑名单。另外,Reiwa-Capita…

蓝桥杯:C++队列、优先队列、链表

C普通队列 算法竞赛中一般用静态数组来模拟队列,或者使用STL queue。使用C的STL queue时,由于不用自己管理队列,因此代码很简洁。队列的部分操作如下。 C优先队列 很多算法需要用到一种特殊的队列:优先队列。它的特点是最优数据…