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.mzph.cn/news/678854.shtml

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

相关文章

《动手学深度学习(PyTorch版)》笔记8.6

注&#xff1a;书中对代码的讲解并不详细&#xff0c;本文对很多细节做了详细注释。另外&#xff0c;书上的源代码是在Jupyter Notebook上运行的&#xff0c;较为分散&#xff0c;本文将代码集中起来&#xff0c;并加以完善&#xff0c;全部用vscode在python 3.9.18下测试通过&…

vue3学习——路由进度条

安装 pnpm i nprogress创建permission.ts import router from /router/index.ts import NProgress from nprogress import nprogress/nprogress.css // 不加样式不显示 NProgress.configure({ showSpinner: false }) router.beforeEach((to, from, next) > {console.log(t…

HTTP与HTTPS:网络安全之门户

源码分享 ​​https://docs.qq.com/sheet/DUHNQdlRUVUp5Vll2?tabBB08J2​​ 在进行网页爬取和数据收集时&#xff0c;我们经常会与HTTP&#xff08;超文本传输协议&#xff09;和HTTPS&#xff08;安全的超文本传输协议&#xff09;打交道。这两种协议都用于互联网上的数据传…

数据结构(2) 线性表

线性表 线性表的定义线性表的基本操作lnitList(&L)DestroyList(&L)Listlnsert(&L,i,e)ListDelete(&L,i,&e)LocateElem(L,e)GetElem(L,i)Length(L)PrintList(L)Empty(L)Tips:引用值 小结 根据数据结构的三要素–逻辑结构、数据的运算、存储结构&#xff0c;…

TDL - medium synopsis: 厦大易中天教授:鲁迅与先秦诸子

Medium Synopsis on Chinese authentic culture I) website addressII) Excerpts&#xff0c; notes and Quotation I) website address url resource II) Excerpts&#xff0c; notes and Quotation 文学&#xff0c;艺术&#xff0c;美学&#xff0c;心理学&#xff0c;人…

GeoServer 2.11.1升级解决Eclipse Jetty 的一系列安全漏洞问题

Eclipse Jetty 资源管理错误漏洞(CVE-2021-28165) Eclipse Jetty HTTP请求走私漏洞(CVE-2017-7656) Eclipse Jetty HTTP请求走私漏洞(CVE-2017-7657) Eclipse Jetty HTTP请求走私漏洞(CVE-2017-7658) Jetty 信息泄露漏洞(CVE-2017-9735) Eclipse Jetty 安全漏洞(CVE-2022-20…

LeetCode374. Guess Number Higher or Lower——二分查找

文章目录 一、题目二、题解 一、题目 We are playing the Guess Game. The game is as follows: I pick a number from 1 to n. You have to guess which number I picked. Every time you guess wrong, I will tell you whether the number I picked is higher or lower th…

Javaweb之SpringBootWeb案例之事务进阶的详细解析

1.3 事务进阶 前面我们通过spring事务管理注解Transactional已经控制了业务层方法的事务。接下来我们要来详细的介绍一下Transactional事务管理注解的使用细节。我们这里主要介绍Transactional注解当中的两个常见的属性&#xff1a; 异常回滚的属性&#xff1a;rollbackFor 事…

项目02《游戏-14-开发》Unity3D

基于 项目02《游戏-13-开发》Unity3D &#xff0c; 任务&#xff1a;战斗系统之击败怪物与怪物UI血条信息 using UnityEngine; public abstract class Living : MonoBehaviour{ protected float hp; protected float attack; protected float define; …

一款Windows和Linux下应急响应工具

介绍 这是一款在发生应急响应事件时可以快速对Windows和Linux系统的证据链进行收集的工具Linux版本 1、工具放到当前目录中&#xff0c;输入密码&#xff1a;Tes.lo01&#xff0c;选择y进入下一步&#xff1b; 2、输入参数s&#xff0c;即对服务器中的端口、账户、当前用户、…

Linux网络编程——tcp套接字

文章目录 主要代码关于构造listen监听accepttelnet测试读取信息掉线重连翻译服务器演示 本章Gitee仓库&#xff1a;tcp套接字 主要代码 客户端&#xff1a; #pragma once#include"Log.hpp"#include<iostream> #include<cstring>#include<sys/wait.h…

JavaScript进阶教程 - 组合和管道

在函数式编程中&#xff0c;组合&#xff08;Composition&#xff09;和管道&#xff08;Pipelining&#xff09;是两种核心概念&#xff0c;用于将多个函数组合成一个新的函数&#xff0c;使得数据可以通过一系列函数进行转换。这种方式鼓励了更简洁、更模块化的代码编写风格。…

第73左侧菜单实现

layout下面新建menu layout index.vue导入menu import Menu from /views/layout/menu菜单实现&#xff1a; <template><el-menuactive-text-color"#ffd04b"background-color"#2d3a4b"class"el-menu-vertical-demo"default-active&quo…

c语言代码简化小妙招

目录 前言1. 三目运算符2. 循环控制变量声明3. 逗号运算符4. 字符串连接5. 条件赋值6. 使用函数来封装重复的代码块7. 使用预处理指令简化代码 前言 C语言是一种广泛使用的编程语言&#xff0c;具有灵活性和高效性。在编写C语言代码时&#xff0c;可以使用一些简化代码的妙招来…

linux的tree用法

首先自己用yum安装&#xff0c;然后使用下面的命令&#xff1a; tree -d datasets/ datasets/ ├── Avazu │ ├── Avazu_x1 │ └── Avazu_x4 └── Criteo├── Criteo_x1└── Criteo_x46 directories下面的命令展示所有的目录 tree -f datasets/ datasets ├…

9.Swift循环

Swift 循环 在 Swift 中&#xff0c;循环语句用于多次执行特定的代码块。Swift 提供了 for-in 循环、while 循环、repeat-while 循环等不同类型的循环语句。以下是 Swift 中常用的循环语句&#xff1a; 一、for-in 循环 for-in 循环用于遍历一个集合中的所有元素&#xff0c…

灰度发布浅见

在之前的稳定性生产文章中有一项对于研发人员比较重要的措施是变更管控&#xff0c;关于变更管控其实在实际生产活动中有很多措施&#xff0c;因为对于不太的行业&#xff0c;其行业特点和稳定性生产的要求也不一样&#xff0c;例如下图&#xff0c;我们可以看到信通院调研的不…

【开源】SpringBoot框架开发APK检测管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 开放平台模块2.3 软件档案模块2.4 软件检测模块2.5 软件举报模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 开放平台表3.2.2 软件档案表3.2.3 软件检测表3.2.4 软件举报表 四、系统展示五、核心代…

【el-tree 文字过长处理方案】

文字过长处理方案 一、示例代码二、关键代码三、效果图 一、示例代码 <divstyle"height: 600px;overflow: auto"class"text item"><el-treeref"tree":data"treeData":props"defaultProps"class"filter-tree&…

计算机网络——05Internet结构和ISP

Internet结构和ISP 互连网络结构&#xff1a;网络的网络 端系统通过接入ISPs连接到互连网 住宅、公司和大学的ISPs 接入ISPs相应的必须是互联的 因此任何2个端系统可相互发送分组到对方 导致的“网络的网络”非常复杂 发展和演化是通过经济的和国家的政策来驱动的 问题&…