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

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
在这里插入图片描述


参考文件

动静态库性能

相关文章:

Linux——动静态库

基础知识:动vs静 类型动静加载时机运行时编译时可复用性多个文件只需要加载一份库文件每个文件都需要加载一份文件性能链接次数越多越有优势链接次数越少越有优势 代码编写 静态库 生成静态库 libmath.a:add.o sub.oar -rc $ $^%.o:%.cgcc -c $<使用静态库 头文件和工…...

Vulnhub靶机:hacksudo-search

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

Leetcode 188 买卖股票的最佳时机 IV

题意理解&#xff1a; 给你一个整数数组 prices 和一个整数 k &#xff0c;其中 prices[i] 是某支给定的股票在第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你最多可以完成 k 笔交易。也就是说&#xff0c;你最多可以买 k 次&#xff0c;卖 k 次。 注意&#xf…...

win32编程系统BUG(Win32 API中的WM_SETTEXT消息)

由于频繁使用Win32 API中的WM_SETTEXT消息&#xff0c;导致内存占用直线上升。 暂未找到有效解决方案。...

Linux防火墙开放

记录一次问题 写的网络服务无法通信 代码没问题&#xff0c;IP绑定、端口绑定没问题&#xff0c;就是无法进行通信&#xff0c;这里要分2步走。 服务器控制台开放 进入防火墙 添加规则&#xff0c;这里以开放udp的8899端口为例 这里在服务器后台就已经开放了&#xff0c;但此时…...

通过 docker-compose 部署 Flink

概要 通过 docker-compose 以 Session Mode 部署 flink 前置依赖 Docker、docker-composeflink 客户端docker-compose.yml version: "2.2" services:jobmanager:image: flink:1.17.2ports:- "8081:8081"command: jobmanagervolumes:- ${PWD}/checkpoin…...

HarmonyOS ArkTS修改App的默认加载的界面(二十)

前言&#xff1a;在Android开发中想要修改默认启动页&#xff0c;只需要在AndroidManifest.xml中设置即可 只需要在启动的activity种添加如下属性即可 <intent-filter><action android:name"android.intent.action.MAIN" /><category android:name&qu…...

【前端高频面试题--Vue基础篇】

&#x1f680; 作者 &#xff1a;“码上有前” &#x1f680; 文章简介 &#xff1a;前端高频面试题 &#x1f680; 欢迎小伙伴们 点赞&#x1f44d;、收藏⭐、留言&#x1f4ac;前端高频面试题--Vue基础篇 Vue基本原理双向绑定与MVVM模型Vue的优点计算属性与监听属性计算属性监…...

Spring Boot 实现热插拔 AOP

现在有这么一个需求:就是我们日志的开与关是交给使用人员来控制的,而不是由我们开发人员固定写死的。大家都知道可以用aop来实现日志管理,但是如何动态的来实现日志管理呢?aop源码中的实现逻辑中有这么一个步骤,就是会依次扫描Advice的实现类,然后执行。我们要做的就是自…...

2月05日,每日信息差

第一、全球首套5G及6G天地一体网络低轨试验卫星发射入轨、。据了解&#xff0c;“中国移动01星”是全球首颗可验证5G天地一体演进技术的试验卫星&#xff0c;它搭载的基站可以利用卫星的广覆盖优势把5G信号传送到地面网络无法覆盖到的地方&#xff1b;另外一颗“‘星核’验证星…...

使用Python进行数据的描述性分析,用少量的描述性指标来概括大量的原始数据

在进行数据分析时&#xff0c;当研究者得到的数据量很小时&#xff0c;可以通过直接观察原始数据来获得所有的信息。但是&#xff0c;当得到的数据量很大时&#xff0c;就必须借助各种描述性指标来完成对数据的描述工作。用少量的描述性指标来概括大量的原始数据&#xff0c;对…...

【JS逆向三】逆向某某网站的sign参数,并模拟生成仅供学习

逆向日期&#xff1a;2024.02.06 使用工具&#xff1a;Node.js 类型&#xff1a;webpack 文章全程已做去敏处理&#xff01;&#xff01;&#xff01; 【需要做的可联系我】 可使用AES进行解密处理&#xff08;直接解密即可&#xff09;&#xff1a;AES加解密工具 1、打开某某…...

移动光猫gs3101超级密码及改桥接模式教程

文章目录 超级管理员账号改桥接模式路由器连接光猫&#xff0c;PPPOE拨号即可&#xff01;附录&#xff1a;如果需要改桥接的话不知道拨号密码咋办打开光猫Telnet功能Telnet 登录 参考文章 移动光猫吉比特GS3101超级账号获取更改桥接 移动光猫gs3101超级密码及改桥接模式教程 …...

leetcode 153

153 寻找旋转排序数组中的最小值 这道题&#xff0c;如果我们熟悉数组 api&#xff0c;可以直接用 Arrays.sort()秒杀&#xff0c;这个方法使用了双轴快速排序算法。 解法1如下&#xff1a; class Solution {public int findMin(int[] nums) {Arrays.sort(nums);return nums…...

【MySQL】数据库的基础——数据库的介绍、MySQL的介绍和架构、SQL分类、MySQL的基本使用、MySQL的存储引擎

文章目录 MySQL1. 数据库的介绍1.2 主流数据库 2. MySQL的介绍2.1 MySQL架构2.2 SQL分类2.3 MySQL的基本使用2.4 MySQL存储引擎 MySQL 1. 数据库的介绍 数据库&#xff08;Database&#xff0c;简称DB&#xff09;是按照数据结构来组织、存储和管理数据的仓库。它是长期存储在计…...

后端的技术设计文档

一、 背景 1.简介 2.业务规划(非必需) 3.工作项拆解 拆解成多个工作项&#xff0c;每个工作项&#xff0c;需要多少人力。 4.资源评估(非必需) 有没有新的服务 二、架构设计 1.架构图(非必需&#xff0c;新服务比较需要) 2.技术选型 SpringCloud、Redis、Mysql、Myba…...

Windows10安装PCL1.14.0及点云配准

一、下载visual studio2022 下载网址&#xff1a;Visual Studio: 面向软件开发人员和 Teams 的 IDE 和代码编辑器 (microsoft.com) 安装的时候选择"使用C的桌面开发“&#xff0c;同时可以修改文件路径&#xff0c;可以放在D盘。修改文件路径的时候&#xff0c;共享组件、…...

C语言第二十二弹---指针(六)

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】 指针 1. 回调函数是什么&#xff1f; 2、qsort使用举例 2.1、使用qsort函数排序整型数据 2.2 使用qsort排序结构体数据 3、qsort函数的模拟实现 总结 1. 回…...

Qt Windows和Android使用MuPDF预览PDF文件

文章目录 1. Windows MuPDF编译2. Android MuPDF编译3. 引用 MuPDF 库4. 解析本地PDF文件 1. Windows MuPDF编译 使用如下命令将MuPDF的源码克隆到本地 git clone --recursive git://git.ghostscript.com/mupdf.git直接用VS&#xff0c;打开 mupdf/platform/win32/mupdf.sln …...

MongoDB聚合:$replaceWith

r e p l a c e W i t h ‘ 可以将输入文档替换为指定的文档。该操作可以替换输入文档的所有字段&#xff0c;包括 ‘ i d ‘ 字段。使用 ‘ replaceWith可以将输入文档替换为指定的文档。该操作可以替换输入文档的所有字段&#xff0c;包括_id字段。使用 replaceWith‘可以将输…...

从‘果冻屏’到‘瀑布屏’:OCA全贴合工艺如何悄悄改变了你的视觉体验?

从‘果冻屏’到‘瀑布屏’&#xff1a;OCA全贴合工艺如何悄悄改变了你的视觉体验&#xff1f; 还记得十年前那些让人抓狂的“果冻屏”吗&#xff1f;阳光下泛着彩虹纹&#xff0c;触控时总感觉隔着一层毛玻璃&#xff0c;甚至能清晰看到屏幕边缘积攒的灰尘。如今拿起任何一款旗…...

如何用 OpenAPI Generator CLI 自动生成TypeScript Angular客户端

如何用 OpenAPI Generator CLI 自动生成TypeScript Angular客户端 【免费下载链接】openapi-generator-cli A node package wrapper for https://github.com/OpenAPITools/openapi-generator 项目地址: https://gitcode.com/gh_mirrors/op/openapi-generator-cli OpenAP…...

Linux应用回滚流程排查方法

Linux应用回滚流程排查方法本文面向具备一定 Linux 基础的技术人员&#xff0c;围绕应用回滚流程展开&#xff0c;重点讨论版本切换、配置恢复和数据兼容。在中级运维和系统管理工作中&#xff0c;这类主题常常与配置变更、资源状态、权限边界、自动化任务和业务影响交织在一起…...

UVa 232 Crossword Answers

题目分析 本题是一个填字游戏&#xff08;Crossword Puzzle\texttt{Crossword Puzzle}Crossword Puzzle&#xff09;的题目。给定一个 rcr \times crc 的网格&#xff0c;其中白色格子包含字母&#xff0c;黑色格子用 *\texttt{*}* 表示。需要按照规则对白色格子进行编号&#…...

别再凭感觉选电感了!深入拆解Bulk电路中电感与电容的选型计算(以12V转5V为例)

别再凭感觉选电感了&#xff01;深入拆解Bulk电路中电感与电容的选型计算&#xff08;以12V转5V为例&#xff09; 在电源设计领域&#xff0c;Bulk电路&#xff08;又称Buck电路&#xff09;作为最常见的降压型DC-DC转换拓扑&#xff0c;其性能优劣直接决定了整个系统的稳定性和…...

5G网络优化关键参数解读:从入门到实战

5G网络优化中&#xff0c;参数调整是最核心的日常操作。本文系统梳理5G NR关键优化参数&#xff0c;帮助初学者快速建立参数优化知识体系。一、5G NR参数分类5G网络优化参数按功能可分为5大类&#xff1a;类别参数数量核心参数优化频率功率控制参数~30个P0、Alpha、MaxPower高切…...

phpenv故障排除终极指南:解决PHP版本管理中的10大常见问题

phpenv故障排除终极指南&#xff1a;解决PHP版本管理中的10大常见问题 【免费下载链接】phpenv Simple PHP version management 项目地址: https://gitcode.com/gh_mirrors/ph/phpenv phpenv是一款简单而强大的PHP版本管理工具&#xff0c;专为PHP开发者设计&#xff0c…...

Tracy安全最佳实践:开发与生产环境的安全配置指南

Tracy安全最佳实践&#xff1a;开发与生产环境的安全配置指南 【免费下载链接】tracy &#x1f60e; Tracy: the addictive tool to ease debugging PHP code for cool developers. Friendly design, logging, profiler, advanced features like debugging AJAX calls or CLI s…...

修一个Bug,引入另一个Bug:从Tomcat高危漏洞看中间件安全修复的困境

攻击者无需认证&#xff0c;仅需向集群通信端口发送构造数据&#xff0c;即可绕过加密校验并触发反序列化&#xff0c;实现远程代码执行。这个漏洞的特殊之处在于——它是官方修复上一个漏洞时“顺手”引入的。2026年5月&#xff0c;Apache Tomcat官方披露了一个高危漏洞CVE-20…...

从电压模到COT:DC-DC降压转换器控制模式演进与选型指南

1. DC-DC降压转换器控制模式概述 第一次接触电源设计时&#xff0c;我被各种控制模式搞得晕头转向。电压模、电流模、迟滞控制、COT...这些专业名词就像天书一样。后来在实际项目中摸爬滚打多年&#xff0c;才发现理解这些控制模式的关键在于抓住它们的"性格特点"——…...