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文件即
可。内核模块可以扩展内核的功能,如添加新的设备驱动、网络协议等。
相关推荐
静渊谋29 分钟前
应急响应整理
linux·windows
CODE_RabbitV38 分钟前
Linux 文件与目录操作命令宝典
linux·运维·服务器
gnawkhhkwang39 分钟前
io_submit系统调用及示例
linux·c语言
caz2841 分钟前
麒麟服务器版操作系统添加VNC
linux·服务器·centos·vnc
gnawkhhkwang43 分钟前
io_cancel系统调用及示例
linux·c语言
melody_of_Canon1 小时前
uv 常用指令
linux·windows·uv
IT小辉同学1 小时前
CentOS 7 编译 Redis 6.x 完整教程(解决 GCC 版本不支持 C11)
linux·redis·centos
牛牛木有坏心眼(大数据进阶)1 小时前
linux系统离线环境安装clickhouse客户端
linux·clickhouse
草堂春睡足1 小时前
【数据迁移】Windows11 下将 Ubuntu 从 C 盘迁移到 D 盘
linux·windows·ubuntu·docker
zlpzlpzyd1 小时前
Zookeeper符合cap中的AP还是CP
linux·分布式·zookeeper