Linux函数库管理

news2024/11/24 12:12:41

文章目录

  • Linux函数库管理
    • 动态与静态函数库
      • 静态函数库
      • 动态函数库
    • ldconfig与 /etc/ld.so.conf
      • ldconfig
        • 使用案例
    • 程序的动态函数库解析:ldd
      • ldd
        • 使用案例
    • 校验软件的正确性
      • 常见的校验软件有哪些?
        • 使用案例

Linux函数库管理

在 Linux 操作系统中,函数库是一个非常重要的东西。因为很多软件都会使用其他软件提供的函数库来实现一些特殊的功能。比如,一些需要验证身份的程序通常会使用 PAM(Pluggable Authentication Modules)模块提供的验证机制,而一些网络连接机制则会使用 SSL(Secure Sockets Layer)函数库来实现连接加密的机制。利用函数库,不同的软件可以通过调用相同的函数来实现相同的功能,这样就可以避免重复编写代码,提高了软件的开发效率和运行效率。因此,在 Linux 操作系统中,函数库的使用和管理非常重要。

动态与静态函数库

函数库根据类型而分为两大类,分别是静态(static)与动态(Dynamic)函数库。下面我们来谈谈这两种类型的函数库

静态函数库

静态函数库是一组已编译好的目标文件的集合,它们被打包成一个文件,以 .a 为后缀名,如 libxxx.a。静态库在编译时被链接到目标程序中,使得程序可以在运行时独立地执行,无需依赖其他库文件。但是,静态库会使目标程序的体积变大,且每次更新都需要重新编译,因此使用较少。

动态函数库

动态函数库也是一组已编译好的目标文件的集合,它们被打包成一个文件,以 .so(Shared Object)为后缀名,如 libxxx.so。动态库在程序运行时被动态加载,使得程序可以共享函数库中的代码,从而节省内存空间。动态库的优点是占用内存较少,可以被多个程序共享,且可以在不重新编译程序的情况下更新函数库。因此,动态库应用较为广泛。

那么这些函数库放置在哪里?在 Linux 系统中,大部分的函数库都存放在 /lib64 和 /lib 目录中,这些函数库是供各种程序调用的。此外,Linux 内核本身也提供了很多函数库,它们存放在 /lib/modules 目录中。需要注意的是,不同版本的内核提供的函数库可能会有很大的差异,所以如果要将内核从 2.4.xx 版本换成 2.6.xx 版本,很可能会由于函数库的不同导致原本可以运行的程序无法正常工作。因此,在升级内核时,需要注意与之相关的函数库是否能够兼容。

ldconfig与 /etc/ld.so.conf

现在的 Linux 系统大多数都使用动态链接库。为了提高函数库的读取速度,我们可以将常用的动态链接库预先加载到内存中。因为内存的访问速度比硬盘快很多,这样程序在需要使用动态链接库时就不需要从硬盘中读取了,从而提高了加载速度。简而言之,预先将常用的动态链接库加载到内存中可以加速程序的运行。

这时候就需要 ldconfig 与 /etc/ld.so.conf 的协助了

如何将动态函数库加载到高速缓存当中呢?

在Linux系统中,程序运行时需要调用一些动态链接库,这些库通常存储在系统中的一些目录下。为了方便程序的调用,我们需要将这些目录添加到系统的库搜索路径中。
在Linux系统中,库搜索路径通常被记录在 /etc/ld.so.conf 文件中。要将目录添加到库搜索路径中,我们需要编辑这个文件,在其中添加需要搜索的目录。
但是,仅仅编辑 /etc/ld.so.conf 文件是不够的,因为这个文件只是一个文本文件,系统并不会自动将它读入缓存中。因此,我们需要使用 ldconfig 命令,将 /etc/ld.so.conf 文件中的数据读入缓存中,并同时将数据记录到 /etc/ld.so.cache 文件中。

这样,当程序需要调用某个动态链接库时,系统就可以通过缓存快速地找到这个库,加快程序的启动速度。

image-20230529233808458

假设你想要将目前你系统下的mariadb函数库加入到缓存中时可以这样做

ldconfig

ldconfig [-f conf] [-C cache]
ldconfig [-p]
选项:
-f conf :指定一个不同的配置文件来替换默认的配置文件 /etc/ld.so.conf
-C cache:指定一个不同的缓存文件来替换默认的缓存文件 /etc/ld.so.cache
-p      :列出目前有的所有函数库数据内容

使用案例

假设我的MariaDB数据库函数库在 /usr/lib64/mysql 当中,如何读进cache

[root@localhost ~]# vim /etc/ld.so.conf.d/csq.conf
/usr/lib64/mysql # 这一行新增的
[root@localhost ~]# ldconfig      # 执行后不会显示任何信息
[root@localhost ~]# ldconfig -p
在缓冲区“/etc/ld.so.cache”中找到 281 个库
        p11-kit-trust.so (libc6,x86-64) => /lib64/p11-kit-trust.so
      # 函数库名称 => 该函数库实际路径

通过上面的操作,我们可以将Mariadb的相关函数信息读入缓存当中,这样可以提高函数库读取的效率。

程序的动态函数库解析:ldd

那么如何判断某个可执行的二进制文件含有什么动态函数库?利用ldd就可以了。

ldd

例如:我想要知道 /usr/bin/passwd 这个程序含有的动态函数库有哪些,可以这样做

ldd [-vdr] [filename]
选项:
-v:列出所有内容信息
-d:重新将数据有遗失的链接点显示出来
-r:将ELF有关的错误内容显示出来

使用案例

找出 /usr/bin/passwd 这个文件的函数库信息

[root@localhost ~]# ldd /usr/bin/passwd 
.............
.........
    libpam.so.0 => /lib64/libpam.so.0 (0x00007f4f6fadc000)         # PAM模块
    libpam_misc.so.0 => /lib64/libpam_misc.so.0 (0x00007f4f6f8d8000)
    libaudit.so.1 => /lib64/libaudit.so.1 (0x00007f4f6f6af000)
    libselinux.so.1 => /lib64/libselinux.so.1 (0x00007f4f6f488000) # SElinux
.....
.....

找出/lib64/libc.so.6这个函数的相关函数库

[root@localhost ~]# ldd -v /lib64/libc.so.6 
        /lib64/ld-linux-x86-64.so.2 (0x00007ff439e6b000)
        linux-vdso.so.1 =>  (0x00007ffd33fc9000)

        Version information:   # 加上 -v 选项增加显示其他版本信息
        /lib64/libc.so.6:
                ld-linux-x86-64.so.2 (GLIBC_2.3) => /lib64/ld-linux-x86-64.so.2
                ld-linux-x86-64.so.2 (GLIBC_PRIVATE) => /lib64/ld-linux-x86-64.so.2

常常升级安装 RPM 的软件时,应该常常会发现那个【依赖属性】的问题。我么可以先以ldd来查看【依赖函数库】之间的相关性,以获取相关信息。

校验软件的正确性

在安装和升级软件时,我们需要注意很多事项,因为我们需要解决很多的程序漏洞。为了保证安全,我们需要从Linux发行版或者一些软件开发商的官网下载最新的软件安装文件来安装。但是,可能存在下载的文件本身就有问题,因为黑客无处不在,很多软件开发商已经公布过它们网页所放置的文件曾经被篡改过。此时,我们需要使用一些校验软件正确性的方法来判断文件的正确性,以确保下载的软件包是完整、正确、可靠的。

常见的校验软件有哪些?

md5sum、sha1sum和sha256sum都是常用的校验工具,它们可以计算文件的哈希值,用于验证文件的完整性和正确性。下面分别介绍一下这三种校验工具的使用方法和特点:

  • md5sum
    md5sum是最常用的校验工具之一,它可以计算文件的MD5哈希值,从而验证文件的完整性和正确性。MD5是一种哈希算法,它将任意长度的信息(文件、文本等)压缩成128位长度的哈希值。

  • sha1sum
    sha1sum也是一种常用的校验工具,它可以计算文件的SHA1哈希值,用于验证文件的完整性和正确性。SHA1是一种哈希算法,它将任意长度的信息(文件、文本等)压缩成160位长度的哈希值。使用sha1sum的方法与md5sum类似,只需将命令中的md5sum替换为sha1sum即可。

  • sha256sum
    sha256sum是一种更安全的校验工具,它可以计算文件的SHA256哈希值,用于验证文件的完整性和正确性。SHA256是一种哈希算法,它将任意长度的信息(文件、文本等)压缩成256位长度的哈希值。相比于MD5和SHA1,SHA256具有更高的安全性和更低的哈希碰撞风险。使用sha256sum的方法与md5sum和sha1sum类似,只需将命令中的md5sum或sha1sum替换为sha256sum即可。

md5sum的使用方法如下

md5sum [-bct] filename
选项:
-b:使用二进制文件的读取方式,默认使用Windows/DOS文件格式的读取方式
-c:校验文件校验值
-t:以文本方式来读取文件校验值

使用案例

查看文件的校验值

[root@localhost ~]# md5sum DjangoBlog.tar.gz 
5f16c461c5685a223d2b34e10f18e6e7  DjangoBlog.tar.gz

一般来说,不同系统中的同名文件内容是不同的,例如你的系统中的/etc/passwd文件和我的系统中的/etc/passwd文件内容不同,因为我们的用户名、密码、shell以及家目录等信息都不同。因此,校验同名文件的校验值时,由md5sum这个文件校验值校验程序计算出来的校验值也是不同的。

你需要在Linux系统上创建和保存这些重要文件的校验值文件。在使用校验工具计算文件的哈希值后,将其保存在一个与文件同名但扩展名为“md5”或“sha1”或“sha256”的校验值文件中,例如,如果你要校验/etc/passwd这个文件,那么你可以执行以下命令:

md5sum /etc/passwd > /etc/passwd.md5

你也可以使用sha1sum或sha256sum命令来计算文件的SHA1或SHA256哈希值,并将其保存到相应的校验值文件中。在保存校验值文件后,你可以将其复制到其他位置或存储介质上,以提供文件正确性验证。当你需要验证文件是否正确时,只需使用相应的校验工具计算文件的哈希值,并将其与保存在校验值文件中的哈希值进行比较即可。如果两个哈希值相同,则说明文件完整,否则可能存在篡改或下载错误的情况

建议你保存这些重要文件的校验值文件列表如下:

  • /etc/passwd
  • /etc/shadow
  • /etc/group
  • /usr/bin/passwd
  • /sbin/rpcbind
  • /bin/login
  • /bin/ls
  • /bin/ps
  • /bin/top

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

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

相关文章

【算法竞赛进阶指南】141.周期 题解 KMP 最小循环节

题目描述 一个字符串的前缀是从第一个字符开始的连续若干个字符,例如 abaab 共有 5 5 5 个前缀,分别是 a,ab,aba,abaa,abaab。 我们希望知道一个 N N N 位字符串 S S S 的前缀是否具有循环节。 换言之…

7.Ansible Modules介绍

什么是Ansible Modules? Ansible模块根据其功能分为不同的组,每个模块提供了一些功能,可以直接使用。 模块官方文档: https://docs.ansible.com/ansible/2.9/modules/modules_by_category.html 系统模块是要在系统级别执行的操作,例如修改系统上的用户…

Springboot +spring security,认证方式---Form表单认证的实现(三)

一.简介 这篇文章来学习下security的认证方式其中的Form表单认证 二.Spring Security的认证方式 2.1什么是认证 认证: 就是用来判断系统中是否存在某用户,并判断该用户的身份是否合法的过程,解决的其实是用户登录的问题。认证的存在,是为…

Spring Boot 如何实现异步消息处理

Spring Boot异步消息处理 在现代应用程序中,异步消息处理是一项至关重要的任务。它可以提高应用程序的性能、可伸缩性和可靠性,同时也可以提供更好的用户体验。Spring Boot提供了多种方式来实现异步消息处理,包括使用Spring AMQP、Spring Ka…

【斯歌X捷普】优秀体验官活动:全民开发的样板企业是这样炼成的

3月22日,上海斯歌与捷普共同举办了一场别出心裁的活动——“产品优秀体验官”颁奖典礼,以表彰对业务流程开发做出突出贡献的捷普员工。值得注意的是,获奖的14名流程开发人员中,有7人并非是专业的IT人员,而是来自业务岗…

搜索引擎变天了!谷歌宣布开放「生成式搜索平台」!AI 大模型颠覆搜索体验

作者 | 小戏、兔子酱 搜索引擎,可能真的要变天了! Google 终于要迎来它 25 年来最大的改变,谷歌宣布了开始内测开放【生成式搜索平台(Search Generative Experience,SGE)】,并逐步舍弃那些甚至是…

Linux中与中断相关的内核数据结构

【摘要】本文树妖详细讲解了Linux中与中断相关的内核数据结构及其内部联系。 八、中断相关的数据结构 8.1 irq_desc 用于表示IRQ描述符的结构定义如下:\linux-2.6.32.63\include\linux\irq.h struct irq_desc {unsigned int irq; //中断号unsigned int …

ipad可以使用其他品牌的手写笔吗?2023年电容笔推荐

现在,人们的生活越来越智能化,有些人已经用平板电脑取代了传统的笔记本。我发现用ipad不管是用来画画还是做笔记非常方便,但是苹果Pencil对于大多数人来说都是昂贵的。据我所知,如果仅仅是为了记录,而不是为了画画的话…

他是98年的卷王,我真的玩不过他····

现在的小年轻真的卷得过分了。前段时间我们公司来了个98年的,工作没两年,跳槽到我们公司起薪18K,都快接近我了。后来才知道人家是个卷王,从早干到晚就差搬张床到工位睡觉了。 最近和他聊了一次天,原来这位小老弟家里…

PKI 基础知识

摘要 本白皮书介绍了加密和公钥基本结构(PKI)的概念和使用 Microsoft Windows 2000 Server 操作系统中的证书服务的基础知识。如果您还不熟悉加密和公钥技术,先阅读本白皮书将有助于理解 Windows 2000 Web 站点上有关这些主题的其它技术白皮书。 引言 Microsoft …

玩转VLAN间路由,教你3个好方法

我的网工朋友大家好啊 在现实网络中,经常会遇到需要跨VLAN相互访问的情况。 很多网工通常会选择一些方法,来实现不同VLAN间主机的相互访问,例如单臂路由。 但是,单臂路由技术中由于存在一些局限性,比如带宽、转发效…

NodeJS基础到入门EXPS⑥

文章目录 ✨文章有误请指正,如果觉得对你有用,请点三连一波,蟹蟹支持😘前言Express框架 Router路由NEST 方法路由端点使用回调函数数组处理路由使用混合使用函数和函数数组处理路由中间件的分类及用法 1、应用级中间件 2、路…

使用 python 制作自动填写问卷星问卷调查程序

目录 前言环境:代码展示尾语 💝 前言 嗨喽~大家好呀,这里是魔王呐 ❤ ~! 你的问卷星任务还没做完吗?今天教你如何快速把问卷星调查任务给完成。 环境: anaconda5.2.0(python3.6.8) 编辑器: p…

ASEMI代理KY可控硅BT169的工作原理及应用领域

编辑-Z 本文主要介绍了可控硅BT169的工作原理及其在各个领域的用。首先,我们将详细阐述可控硅BT169的工作原理,包括结构特点、工作过程等;其次,我们将探讨可控硅BT169在家用电器、工业控制、电力电子等领域的应用。 1、可控硅BT1…

RSA加密 多线程读写不安全

转自:(一场开源 RSA 库引发的“血案”) 导读 RSA 加密算法是一种非对称加密算法,该算法极为可靠,在现有技术条件下,很难破解,因此在软件开发中被广泛使用。你不必担心,本文不会介绍…

如何Debug调试Android程序

当开发过程中遇到一些奇怪的bug,但又迟迟定位不出来原因是什么的时候,最好的解决办法就是调试了。调试允许我们逐行地执行代码,并可以实时观察内存中的数据,从而能够比较轻易地查出问题的原因。总结一下使用Android Studio来调试A…

又双叒添新证书:上海斯歌通过ISO9001和ISO27001认证

近期,上海斯歌顺利通过权威机构审查,正式成为ISO9001质量管理体系和ISO27001信息管理安全体系双重认证企业。 可以说ISO9001及ISO27001的认证,既是斯歌坚持管理标准化、程序化、规范化的成果;也是国际标准化组织(ISO&a…

Vue3通透教程【十六】TS自动编译

文章目录 🌟 写在前面🌟 自动编译🌟 编译器的配置文件🌟 写在最后 🌟 写在前面 专栏介绍: 凉哥作为 Vue 的忠实 粉丝输出过大量的 Vue 文章,应粉丝要求开始更新 Vue3 的相关技术文章&#xff0…

Apache的配置与应用(构建web、日志分割及AWStats分析系统)

Apache的配置与应用 一、构建虚拟Web主机二、httpd服务支持的三种虚拟机类型1、基于域名的虚拟主机2、基于IP地址的虚拟主机3、基于端口的虚拟主机 三、构建web虚拟目录与用户授权限制1、创建用户认证数据文件2、添加用户授权配置3、验证用户访问权限4、在客户机中浏览器访问 四…

F牌独立站都有哪些收款方式?各有什么优缺点?

最近几个月以来,FP独立站的收款支付问题变得非常焦灼,不少跨境卖家忧心忡忡,害怕自己收不了款血本无归。今天,我跟大家介绍几种FP独立站的收款方式,以及解析他们各有哪些优缺点,方便卖家选择。 一、TT电汇 …