【Linux】:静动态库

静动态库

  • 一.静态库
    • 1.设计静态库
    • 2.生成静态库
    • 3.发布静态库
    • 4.使用静态库
  • 二.动态库
    • 1.设计动态库
    • 2.生成和发布动态库
    • 3.使用

一.静态库

程序在编译链接的时候把库的代码链接到可执行文件中。程序运行的时候将不再需要静态库。

静态库链接格式:libxxx.a(前缀是lib,后缀是.a)

1.设计静态库

用mymath.h声明,mymath.c作为实现

在这里插入图片描述

在这里插入图片描述

2.生成静态库

在这里插入图片描述

第一行:形成一个库,叫做libmymath.a
第二行:依赖的文件mymath.o,并且把所有依赖的.o文件打包成一个.a文件(ar是生成静态库的指令,rc是releace和create,连起来就是把后面的文件打包到前面的文件里)
第三行:把所有依赖的源文件变成.o文件 最后进行清理**

在这里插入图片描述

在这里插入图片描述

这样库就形成了,总结一下就是把所需要的.o文件全部用ar打包成一个.a文件就行了。

3.发布静态库

创建include和mymathlib两个文件在lib里,在将所有的.h文件拷贝到include里,将所有.a文件拷贝到mymathlib里。
在这里插入图片描述

在这里插入图片描述

4.使用静态库

在这里插入图片描述

在这里插入图片描述

第一种使用方法

在这里插入图片描述

这里直接编译是会报错的,原因很简单。在编译时会进行头文件展开,那么第一件事情就是找到对应的头文件,而它会在默认的路径下查找,但默认的路径里很明显不包括我们自己写的库,所以必须指定路径。

1.-I 选项代表到指定目录下查找头文件
2.-L 选项代表到指定目录下查找库文件
3.-l 选项代表指定的库(库的名字去掉前缀和后缀)

在这里插入图片描述

在这里插入图片描述

第二种方法

gcc会默认在默认目录里搜索,那么我们可以自己把头文件和库拷贝到对应默认目录里(或者添加软链接)。

在这里插入图片描述

但是gcc只认c库里的文件,所以要使用第三方库依然要加-l选项。

在这里插入图片描述

二.动态库

动态库(.so):程序在运行的时候才去链接动态库的代码,多个程序共享使用库的代码。

动态库:前缀是lib,后缀是.so

1.设计动态库

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

接下来就用这两个源文件打包形成动态库。

2.生成和发布动态库

动态库的生成与静态库差别不大,这里将动静态库连起来使用。

shared: 表示生成共享库格式
fPIC:产生位置无关码(position independent code)

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

从上面看到一个.a库和一个.so库合并成了一个lib库。

3.使用

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

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

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

相关文章

CompareM-平均氨基酸一致性(AAI)计算

文章目录 Comparem简介比较基因组统计基因组使用模式其他 安装使用基于基因组计算氨基酸一致性基于基因组蛋白计算氨基酸一致性 结果转变成矩阵参考 Comparem简介 CompareM 是一个支持进行大规模基因组比较分析的软件工具包。它提供跨基因组(如氨基酸一致性&#x…

git命令汇总

1.git是基于ssh的代码管理工具,所以在git使用之前需要配置好ssh ssh配置教程 2.先创建仓库 3. git init在目标的git目录下创建仓库 4.git add .(或者写文件名) 5.git commit -m "标记信息" 持久化 6.git remote add origin gitgit.acwing.com:yaoaolong/11_5.git初次…

如何判断一个角是否大于180度(2)

理论计算见上一篇: 如何判断一个角是否大于180度?_kv1830的博客-CSDN博客 此篇为代码实现 一。直接上代码: import cv2 as cv import numpy as np import mathdef get_vector(p_from, p_to):return p_to[0] - p_from[0], p_to[1] - p_from…

(头哥)多表查询与子查询

目录 第1关:查询每个学生的选修的课程信息 第2关:查询选修了“数据结构”课程的学生名单 第3关:查询“数据结构”课程的学生成绩单 第4关:查询每门课程的选课人数 第5关:查询没有选课的学生信息 第6关&#xff1a…

Doris:读取Doris数据的N种方法

目录 1.MySQL Client 2.JDBC 3. 查询计划 4.Spark Doris Connector 5.Flink Doris Connector 1.MySQL Client Doris 采用 MySQL 协议,高度兼容 MySQL 语法,支持标准 SQL,用户可以通过各类客户端工具来访问 Doris。登录到doris服务器后&a…

华为ensp:ospf动态路由

ip已配置好了 ,现在进入路由器去宣告网段 R1 进入系统视图 ospf 1 area 1 network 192.168.1.0 0.0.0.255 network 1.1.1.0 0.0.0.255 R2 进入系统视图 ospf 1area 1 network 1.1.1.0 0.0.0.255 quit area 0 network 192.168.2.0 0.0.0.255 network 2.2…

上机4KNN实验4

目录 编程实现 kNN 算法。一、步骤二、实现代码三、总结知识1、切片2、iloc方法3、归一化4、MinMaxScale()5、划分测试集、训练集6、KNN算法 .py 编程实现 kNN 算法。 1、读取excel表格存放的Iris数据集。该数据集有5列,其中前4列是条件属性…

[CISCN 2023 西南]do_you_like_read

打开题目,大概是一个购买书籍的网站,有登陆的功能 我们可以先分析下给的源码 在admin.php中会验证是否为admin用户 我们尝试爆破下密码,爆出来为admin123 登陆后发现存在文件上传漏洞 我们分析下源码 存在文件后缀检测,如果为p…

交换机工作原理

交换机工作原理 交换机功能:端口扩展(默认同一网络),如果只是两台设备进行通信,可以直接连接这两台设备而不用交换机,但如果设备较多,设备没有那么多接口,那么这个时候就需要交换机…

三分钟学完Git版本控制常用指令

基本指令 git clone [url] 克隆远程仓库到本地 git clone https://gitee.com/mayun2023a/mprpc.git2.git checkout -b xxx 切换至新分支xxx(相当于复制了remote的仓库到本地的xxx分支上) 3.修改或者添加本地代码(部署在硬盘的源文件上) 4.g…

Django配置文件,request,链接mysql方法,Orm简介

三板斧问题(views.py) HttpResponse # 返回的是字符串render # 渲染一个HTML静态文件,模板文件redirect # 重定向的 在视图文件中得视图函数必须要接收一个形参request,并且,视图函数也要有返回值&#xff…

着实不错的自适应大邻域搜索算法ALNS

文章目录 引言演进路线邻域搜索,NS变邻域搜素,VDNS大邻域搜索,LNS自适应大邻域搜索,ALNS 代码实现34个国内城市的TSP测试集XQF131 相关阅读 引言 之前介绍的差分进化算法和蚁群算法分别适用于求解连续优化问题和组合优化问题&…

【第五章】软件设计师 之 系统安全分析与设计

文章底部有个人公众号:热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享? 踩过的坑没必要让别人在再踩,自己复盘也能加深记忆。利己利人、所谓双赢。 1、信息系统安全属性 2、对称加密与非对称加…

Redis五种数据类型及命令操作(二)

🎈个人公众号:🎈 :✨✨✨ 可为编程✨ 🍟🍟 🔑个人信条:🔑 知足知不足 有为有不为 为与不为皆为可为🌵 🍉本篇简介:🍉 本篇记录Redis五种数据类型及命令操作,如…

C语言--前置++与后置++

:自增1 注意区分前置和后置 前置:先,后使用 后置:先使用,后 --:自减1 注意区分前置和后置 前置:先-- ,后使用 后置,先使用,后-- int main() {int i 10;//int j i;//前置,先…

网络编程学习笔记

参考: 套接字通信部分 《TCP/IP 网络编程》以及《TCP/IP网络编程》学习笔记 socket 编程 1. 字节序 字节序,顾名思义字节的顺序,就是大于一个字节类型的数据在内存中的存放顺序,也就是说对于单字符来说是没有字节序问题的&…

如何使用PHPStudy本地快速搭建网站并实现远程访问

文章目录 [toc]使用工具1. 本地搭建web网站1.1 下载phpstudy后解压并安装1.2 打开默认站点,测试1.3 下载静态演示站点1.4 打开站点根目录1.5 复制演示站点到站网根目录1.6 在浏览器中,查看演示效果。 2. 将本地web网站发布到公网2.1 安装cpolar内网穿透2…

【第三章】软件设计师 之 数据库系统

文章底部有个人公众号:热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享? 踩过的坑没必要让别人在再踩,自己复盘也能加深记忆。利己利人、所谓双赢。 1、数据库系统前言 2、三级模式 - 两级映射…

选购护眼台灯,全网都没有说清一个关键点!——照度均匀度

网上关于护眼台灯的选购推荐帖子多如牛毛,好台灯选购要点大体可归纳为以下五点: RG0无蓝光危害(豁免级蓝光危害,RG1为低蓝光危害、RG2、RG3分别为中度和高危危害) 无眩光,无可视频闪(不刺眼…

matlab 多自由度的车辆垂向振动模型 车辆平稳性研究

1、内容简介 略 17-可以交流、咨询、答疑 多自由度的车辆垂向振动模型 多自由度的车辆垂向振动模型,包含四分之一车体模型、半车模型和整车模型 垂向振动模型、四分之一车体模型、半车模型和整车模型 2、内容说明 略 3、仿真分析 略 4、参考论文 略 链接&…