linux内核之-----内核模块文件格式

本文详细介绍了Linux内核中ELF文件的各个section,包括.text、.data、.bss等,以及section header table的作用。通过readelf工具展示了如何查看ELF文件的sections,并解释了各section的属性如Address、Offset、Size、Align和Flag,强调了不同section在程序运行时的角色,特别是Allocable与non-Allocable的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

linux内核之-----内核模块文件格式
        linux内核驱动有两种加载方式,一种是编译进内核文件即uImage或者zImage文件中,另一种是编译成内核模块形式,即XXX.ko。在分析内核模块文件格式之前,最好先认识一下ELF(Executable and Linking Format)文件格式。
        ELF(Executable and Linking Format)是一种对象文件的格式,它自最早在 System V 系统上出现后,被 UNIX 世界所广泛接受,作为缺省的二进制文件格式来使用。可以说,ELF是构成众多UNIX系统的基础之一,不管你是Windows或者Linux应用程序开发,还是Linux内核驱动成都开发人员,最好熟悉并掌握ELF。
        TISC(Tool Interface Standard Committee)委员会定义了一套ELF标准。你可以从这里( http://refspecs.freestandards.org/elf/)找到详细的标准文档。
        WiKi上对ELF文件也有相关的介绍,我们着重关注WiKi上给定的链接: https://en.wikipedia.org/wiki/Executable_and_Linkable_Format

首先,你需要知道的是所谓对象文件(Object files)有三个种类:
        1) 可重定位的对象文件(Relocatable file)
            这是由汇编器汇编生成的 .o 文件。后面的链接器(link editor)拿一个或一些 Relocatable object files 作为输入,经链接处理后,生成一个可执行的对象文件 (Executable file) 或者一个可被共享的对象文件(Shared object file)。我们可以使用 ar 工具将众多的 .o Relocatable object files 归档(archive)成 .a 静态库文件。另外,可以预先告诉大家的是我们的内核可加载模块 .ko 文件也是 Relocatable object file。
        </
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值