Linux系统中lib64文件夹下包含:动态链接库,静态链接库,内核模块等

lib64 目录对系统稳定运行有重要作用。

lib64文件

lib64 文件夹存放主要是可被程序直接加载并使用的 64 位代码模块,包括动态库、静态库、内核模块等,这些文件对程序运行都至关重要。

在 Linux 系统中,lib64 文件夹通常用于存放 64位库文件的二进制文件。
主要有以下几类文件:

  1. 动态链接库文件(.so):这些是可直接被程序加载并链接的共享库,以.so作为文件扩展名。如 libopencv.so。

  2. 静态链接库文件(.a):这些是静态存档文件,用于静态链接,以.a作为扩展名。如libxxx.a

  3. Linux 内核模块文件(.ko):一些可以被内核动态加载的模块,以.ko为扩展名。

  4. 程序的执行文件:一些程序的执行文件也会放在 lib64 文件夹下,比如 /usr/lib64/firefox 等。

  5. 配置文件、说明文件等。

  6. 相比 lib 文件夹,lib64 专门用于存放 64 位库文件,而 lib 中是 32 位版本的库。这在支持多重系统时很有必要。
    在这里插入图片描述

动态链接库

动态库在Linux上一般使用.so文件,在Windows上使用.dll文件。编写动态库使代码可以被广泛重用,是软件复用的重要方式。动态链接使程序升级和部署更加灵活。

动态链接库(Dynamic Link Library,DLL)是一种包含可以被多个程序共享的代码和数据的库文件,它可以在程序运行时动态加载,而不是在linking时静态加载。

动态链接库的主要特征包括:

  • 共享性:多个程序可以同时使用一个动态库,减少重复代码。

  • 动态加载:程序在运行时才加载动态库,而不是在编译时加载。

  • 版本管理:动态库可以单独升级,而程序无需重新编译。

  • 依赖管理:明确定义库的依赖关系,按需加载所需库。

  • 语言中立:支持多种语言调用,如C、C++、Rust等。

  • 运行时链接:程序不需要包含动态库代码,只在运行时做符号解析并重定位。

  • 空间节省:多个程序共享同一块内存,减少内存占用。

静态链接库

静态库可以看作编译时直接插入目标程序的代码段。它的主要优点是移植方便,缺点是占用空间大、重复代码多。

静态链接库(Static Library)是一种在程序编译链接阶段就被整合到目标程序中的库文件,和动态链接库相对。

静态库的主要特征:

  • 静态加入:静态库在编译时就被整合到目标程序中,而不是运行时动态加载。

  • 独立存在:静态库是一个独立的文件,可以被重用。

  • 无版本管理:程序每次都会使用静态库的一个快照,不方便做版本升级。

  • 重复代码:如果多个程序都链接了相同的静态库,会有重复代码。

  • 可移植性:静态库可以和程序一起打包部署,无需安装库的环境。

  • 语言相关:静态库通常是特定语言编译而成,如C++。

  • 编译时间增长:增加了编译链接时间。

  • 增加可执行程序大小:会将库代码加入到可执行文件中。

内核模块

内核模块机制是Linux内核一个非常重要的设计,可以动态扩展内核功能,开发内核驱动等,而无需频繁重新编译内核。是实现Linux内核可扩展性的关键。

内核模块文件是一种可以动态插入内核(Linux Kernel)的代码模块,通常情况下以.ko作为扩展名。

内核模块的几个主要特征:

  • 动态插入:可以在系统运行时通过insmod/modprobe命令动态插入内核并运行,无需重新启动。

  • 可卸载:可以使用rmmod命令动态的从运行中的内核卸载模块。

  • 扩展内核:可以无需修改内核源码就扩展内核的功能。

  • 硬件支持:很多硬件驱动功能都是以内核模块实现的。

  • 依赖管理:可以声明对其他内核模块或符号的依赖。

  • 版本控制:内核模块可以独立内核进行更新。

  • 优化重用:多个内核可以重用同一模块,优化内存占用。

  • 加速开发:可以独立内核开发并打包模块,加快开发速度。

猜你喜欢

转载自blog.csdn.net/qq_40280673/article/details/132356691
今日推荐