linux的 .so和.ko文件分别是什么?主要区别是什么?

前言:

.so和.ko文件的主要区别在于它们的应用层次和功能不同。‌

应用层次

复制代码
.so文件‌:这是用户层的动态链接库(Shared Object),主要用于用户态的程序中。
它用于动态链接,多个程序可以共享同一个库文件,从而节省空间并提高效率。用户
态的代码不能直接调用内核态的代码,但可以通过.so文件进行间接调用‌。

通常存在于:/lib/  /lib64/。 一些软件也会自带.so文件,避免系统差异导致软件无法
使用。

‌.ko文件‌:这是内核态的动态链接库(Kernel Object),主要用于内核模块。.ko文件
是内核模块,可以在Linux内核启动后动态加载和卸载,用于扩展内核的功能。内核
模块可以插入到内核中,实现特定的功能,如USB、显卡、CPU、串口等各种设备驱
动,TCP/IP网络协议等‌。

通常存在于 类似于/lib/modules/5.10.0-74.3.uelc20.x86_64/kernel  的内核文件中。
把5.10.0-74.3.uelc20.x86_64  换成执行 uname -a  命令出来的那串内容就可以进来
了。

功能和用途

复制代码
‌.so文件‌:主要用于用户态的程序中,提供动态链接的功能,使得多个程序可以共享
同一个库文件,减少磁盘空间占用,提高程序运行的效率。用户态的程序通过调
用.so文件来实现功能‌。

‌.ko文件‌:用于内核模块,优点是可以缩小内核的大小。可以在系统启动后动态加载
和卸载,不需要每次需要新功能就重新编译内核,只需要加入扩展功能的.ko文件即
可。内核模块可以扩展内核的功能,如添加新的设备驱动、网络协议等。
相关推荐
小白勇闯网安圈15 分钟前
极简版Linux发行内核
linux
管理大亨15 分钟前
Linux vs Windows:五大维度深度对决
linux·arm开发·windows
乘凉~23 分钟前
【Linux作业】Limux下的python多线程爬虫程序设计
linux·爬虫·python
Trouvaille ~1 小时前
【Linux】库制作与原理(二):ELF格式与静态链接原理
linux·运维·c语言·操作系统·动静态库·静态链接·elf文件
KingRumn1 小时前
Linux信号之信号安全
linux·算法
Trouvaille ~1 小时前
【Linux】库制作与原理(三):动态链接与加载机制
linux·c语言·汇编·got·动静态库·动态链接·plt
写代码的橘子n1 小时前
IPV6复习(基础入手版)
运维·服务器·网络
APIshop1 小时前
高性能采集方案:淘宝商品 API 的并发调用与数据实时处理
linux·网络·算法
ICT技术最前线1 小时前
H3C双WAN口策略路由配置技术教程
运维·网络·h3c·策略路由
一分半心动1 小时前
windows docker desktop 安装VibeVoice
运维·docker·容器