当前位置: 技术问答>linux和unix
.ko和.o的文件有什么区别
来源: 互联网 发布时间:2016-04-16
本文导语: .o也可以作为模块加载.ko也可以 那到底有什么区别呢>? 跟内核版本有关么? 还是仅仅是内核模块和一般模块的区别!!? | .o的文件是object文件,.ko是kernel object,与.o的区别在于其多了一些sections,...
.o也可以作为模块加载.ko也可以
那到底有什么区别呢>?
跟内核版本有关么?
还是仅仅是内核模块和一般模块的区别!!?
那到底有什么区别呢>?
跟内核版本有关么?
还是仅仅是内核模块和一般模块的区别!!?
|
.o的文件是object文件,.ko是kernel object,与.o的区别在于其多了一些sections,比如.modinfo。.modinfo section是由kernel source里的modpost工具生成的,包括MODULE_AUTHOR, MODULE_DESCRIPTION, MODULE_LICENSE, device ID table以及模块以来关系等等。 depmod 工具根据.modinfo section生成modules.dep, modules.*map等文件,以便modprobe更方便的加载模块。
在2.6内核下编译driver, 首先要确认你的linux系统里有没有 kernel tree,检查的方法是看看文件夹/lib/modules/$(uname -r)/build是否指向source code,并进去看看,是否有Makefile, include, scripts等文件夹,在scripts/mod下可以找到前面提到的modpost,这个东东是 生成.ko的关键。 如果没有kernel tree,需要重新build一份kernel来建立这个kernel tree。
在2.4内核中,生成的就是.o文件,2.6 kernel对内核模块的管理做了一些扩展!
GOOD LUCK!
在2.6内核下编译driver, 首先要确认你的linux系统里有没有 kernel tree,检查的方法是看看文件夹/lib/modules/$(uname -r)/build是否指向source code,并进去看看,是否有Makefile, include, scripts等文件夹,在scripts/mod下可以找到前面提到的modpost,这个东东是 生成.ko的关键。 如果没有kernel tree,需要重新build一份kernel来建立这个kernel tree。
在2.4内核中,生成的就是.o文件,2.6 kernel对内核模块的管理做了一些扩展!
GOOD LUCK!