Linux——动静态库

基础知识:动vs静

类型
加载时机运行时编译时
可复用性多个文件只需要加载一份库文件每个文件都需要加载一份文件
性能链接次数越多越有优势链接次数越少越有优势

代码编写

静态库

生成静态库
libmath.a:add.o sub.oar -rc $@ $^%.o:%.cgcc -c $<
使用静态库
头文件和工作目录同目录
  1. 头文件,库文件放到文件需要使用的目录下
#include<stdio.h>
#include"add.h"
#include"sub.h"int main()
{printf("%d\n",add(1,2));printf("%d\n",sub(1,2));return 0;
}

头文件放到工作目录下
在这里插入图片描述
2. 指明库文件的位置
在这里插入图片描述

头文件和工作目录不同目录

只要能指明头文件路径就可以使用

#include<stdio.h>
#include"dy/add.h"
#include"dy/sub.h"int main()
{printf("%d\n",add(1,2));printf("%d\n",sub(1,2));return 0;
}

动态库

生成动态库
libmath.so:add.o sub.ogcc -shared -o $@ $^%.o:%.c# gcc -c $^ -o $@gcc -fPIC -c $<

fPIC 与位置无关码

使用动态库
  1. 头文件,库文件放到文件需要使用的目录下
  2. 生成可执行文件
    在这里插入图片描述
    原因解释

-I(大写i)——如果头文件不在目录下,会报错;这个命令告诉编译器头文件位置
-L——库文件位置
-l(小写L)——库文件名称
直接写明是告诉编译器怎么做,在运行的时候是告诉系统库文件的位置——需要在系统上设置库文件的位置


指明库文件位置的方法
  1. 直接将头文件+库文件添加进系统目录

头文件 —— /usr/include/
库文件 —— /lib64

  1. 系统目录下添加软链接

ln -s 目标库文件 新增软连接

  1. 修改LD_LIBRARY_PATH变量

unset 删除变量内容—— unset PATH
使用 : 将地址进行分割
export 设置环境变量—— export PATH=…

  1. /etc/ld.so.conf.d/目录下创建文件 ——永久有效
    在这里插入图片描述

使用ldconfig进行刷新,必要时使用sudo
在这里插入图片描述


参考文件

动静态库性能

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

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

相关文章

《CSS 简易速速上手小册》第6章:高级 CSS 技巧(2024 最新版)

文章目录 6.1 使用 CSS 变量进行设计&#xff1a;魔法配方的调配6.1.1 基础知识6.1.2 重点案例&#xff1a;创建可定制的主题6.1.3 拓展案例 1&#xff1a;响应式字体大小6.1.4 拓展案例 2&#xff1a;使用 CSS 变量创建动态阴影效果 6.2 calc(), min(), max() 等函数的应用&am…

JavaScript资源加载:onload,onerror

&#x1f9d1;‍&#x1f393; 个人主页&#xff1a;《爱蹦跶的大A阿》 &#x1f525;当前正在更新专栏&#xff1a;《VUE》 、《JavaScript保姆级教程》、《krpano》、《krpano中文文档》 ​ ​ ✨ 前言 资源加载 是 web 开发中的一个重要概念&#xff0c;指的是浏览器加载…

【EAI 020】Diffusion Policy: Visuomotor Policy Learning via Action Diffusion

论文标题&#xff1a;Diffusion Policy: Visuomotor Policy Learning via Action Diffusion 论文作者&#xff1a;Cheng Chi, Siyuan Feng, Yilun Du, Zhenjia Xu, Eric Cousineau, Benjamin Burchfiel, Shuran Song 作者单位&#xff1a;Columbia University, Toyota Research…

第4讲 小程序首页实现

首页 create.vue <template><view class"vote_type"><view class"vote_tip_wrap"><text class"type_tip">请选择投票类型</text><!-- <text class"share">&#xe739;分享给朋友</text&g…

98.网游逆向分析与插件开发-网络通信封包解析-定位明文发送数据的关键函数

内容参考于&#xff1a;易道云信息技术研究院VIP课 上一个内容&#xff1a;项目需求与需求拆解 通过上一个内容有了对网络通信架构有一个简单认识了解&#xff0c;对于我们重要的点是 组织数据 到 加密数据之间的过程&#xff0c;这个过程的数据我们是可以看懂的&#xff0c;…

笔记---dp---最长上升子序列模型

模型原始题目&#xff1a;AcWing.895.最长上升子序列 题目关系如下&#xff1a; 转化一 AcWing.1017.怪盗基德的滑翔翼 怪盗基德是一个充满传奇色彩的怪盗&#xff0c;专门以珠宝为目标的超级盗窃犯。 而他最为突出的地方&#xff0c;就是他每次都能逃脱中村警部的重重围堵…

Vue核心基础1:数据代理

1 回顾Object.defineProperty方法 let str hello const person {name: 张三,age: 18 } Object.defineProperty(person, sex, {// value: 男,// enumerable: true, // 控制属性是否可以枚举&#xff0c;默认值是false// writable: true, // 控制属性是否可以被修改&#xff0…

C++进阶(十四)智能指针

&#x1f4d8;北尘_&#xff1a;个人主页 &#x1f30e;个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上&#xff0c;不忘来时的初心 文章目录 一、为什么需要智能指针&#xff1f;二、内存泄漏1、 什么是内存泄漏&#xff0c;内存泄漏的危…

Vulnhub靶机:hacksudo-ProximaCentauri

一、介绍 运行环境&#xff1a;Virtualbox 攻击机&#xff1a;kali&#xff08;10.0.2.15&#xff09; 靶机&#xff1a;hacksudo-ProximaCentauri&#xff08;10.0.2.51&#xff09; 目标&#xff1a;获取靶机root权限和flag 靶机下载地址&#xff1a;https://www.vulnhu…

当AGI遇到人形机器人

为什么人类对人形机器人抱有执念 人形机器人是一种模仿人类外形和行为的机器人&#xff0c;它的研究和开发有着多方面的目的和意义。 人形机器人可以更好地适应人类的环境和工具。人类的生活和工作空间都是根据人的尺寸和动作来设计的&#xff0c;例如门、楼梯、桌椅、开关等…

再利用系统盘时,如何删除恢复分区(Recovery Partition)

系统盘有一个Recovery Partition&#xff0c;记录了重要的系统信息&#xff0c;不能删除。 Windows 10的 Disk Managment 不提供用户删除这个Partition的选项。 近日我插入一块原系统盘&#xff0c;Format后作为DataDisk&#xff0c;此时需要删除这块硬盘上的RecoveryPartition…

交叉熵损失函数(Cross-Entropy Loss)的基本概念与程序代码

交叉熵损失函数&#xff08;Cross-Entropy Loss&#xff09;是机器学习和深度学习中常用的损失函数之一&#xff0c;用于分类问题。其基本概念如下&#xff1a; 1. 基本解释&#xff1a; 交叉熵损失函数衡量了模型预测的概率分布与真实概率分布之间的差异。在分类问题中&…