当前位置: 技术问答>linux和unix
动态链接库.ko与.so的区别???怎么生成制作.ko文件 ???
来源: 互联网 发布时间:2016-05-08
本文导语: .ko好象是内核模块的动态链接库吧,我想问的是这样的ko要怎么制作生成??? .so用gcc就可以生成,.ko呢? 我想利用.ko技术生成可重用模块,网上对.ko的资料好象基本没有,谁能介绍一下? 多谢了!!! ...
.ko好象是内核模块的动态链接库吧,我想问的是这样的ko要怎么制作生成???
.so用gcc就可以生成,.ko呢?
我想利用.ko技术生成可重用模块,网上对.ko的资料好象基本没有,谁能介绍一下?
多谢了!!!
.so用gcc就可以生成,.ko呢?
我想利用.ko技术生成可重用模块,网上对.ko的资料好象基本没有,谁能介绍一下?
多谢了!!!
|
内核模块的例子:
Makefile
#include
#include
#include
MODULE_LICENSE("GPL");
int init_debug(void)
{
PDEBUG("Hello World!%s","n");
return 0;
}
void exit_debug(void)
{
PDEBUG("exit the module%s","n");
}
module_init(init_debug);
module_exit(exit_debug);
Makefile
ifneq($(KERNELRELEASE),)
obj-m := hello.o
else
KERNELDIR ?= /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
all:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
endif
|
两个完全不同的东西。 即使可能思想上有共同之处--简单的说,都是动态的。
.ko -- kernel object,内核模块,可以在Linux内核起来之后动态的加载和卸载。
.so -- shared object,用户层的动态库 (于.a 对应),使用同一个.so的程序在运行时
只需要该.so的同一份拷贝。
关于.ko,上面有范例了。在Linux Device Driver 3rd那本书上也有说明。
至于.so,这里有例子:
http://blog.csdn.net/thinkerABC/archive/2006/03/11/621817.aspx
另外,如果你有 《C专家编程》这本书,也可以看看 “第五章 对链接的思考”
.ko -- kernel object,内核模块,可以在Linux内核起来之后动态的加载和卸载。
.so -- shared object,用户层的动态库 (于.a 对应),使用同一个.so的程序在运行时
只需要该.so的同一份拷贝。
关于.ko,上面有范例了。在Linux Device Driver 3rd那本书上也有说明。
至于.so,这里有例子:
http://blog.csdn.net/thinkerABC/archive/2006/03/11/621817.aspx
另外,如果你有 《C专家编程》这本书,也可以看看 “第五章 对链接的思考”