.o ----是目标文件,相当于windows中的.obj文件(一般由.c文件通过gcc编译过来)
.a ----是静态库,由多个.o组成在一起,用于静态连接
.ko ---- kernel object,内核模块,是Linux 2.6内核使用的动态连接文件的后缀名,也就是模块文件,用来在Linux系统启动时加载内核模块。
.o文件也是object文件,.ko文件是kernel object文件。
.ko与.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更方便的加载模块。
.so ----shared object,为共享库,是用户层的动态库,用于动态连接的,和dll差不多。使用同一个.so的程序在运行时只需要该.so的同一份拷贝。 |