本文目录一览:
- 1、MTK6582怎么生成.Ko文件,首先我已经编译到hello文件,但是没有生成Ko文件
- 2、编译时内核怎么生成的ko文件
- 3、Linux下编写和加载 .ko 文件(驱动模块文件
- 4、请人帮忙用linux生成个arm平台的.ko文件
- 5、linux内核模块编译-通过Makefile重命名.ko文件名和模块名
MTK6582怎么生成.Ko文件,首先我已经编译到hello文件,但是没有生成Ko文件
看看你是否编译进内核了
把你的makefile板书出来
有.o 而没有.ko
估计是你把驱动编译进内核了
obj-m += $(KO_NAME).o //m是编译成module
obj-y += $(KO_NAME).o //y是编译进 kernel 只可以看到.o 不会生成ko
编译时内核怎么生成的ko文件
不玩这个,这里提供一个思路
gcc命令其实是分成几步执行的,预处理,编译,链接。".o"才到编译这一步,如果按照生成ko文件的方式链接一下说不定能成。
另生成你所说的.o文件的源代码一定是要按".ko"的规范写的,也就是什么模块注册,模块卸载等函数是必需要有的.
想想编译ko里的makefile,里面好像是引入了一个modules目录吧!
呵呵,3楼的方法是普通的链接过程。“.ko”的链接应该不会这么简单!
望楼主细心探索
Linux下编写和加载 .ko 文件(驱动模块文件
一、.ko 文件介绍
.ko文件是kernel object文件(内核模块),该文件的意义就是把内核的一些功能移动到内核外边, 需要的时候插入内核,不需要时卸载。
二、优点
(1)这样可以缩小内核体积;
(2)使用方便。
三、.ko文件一般的用处
(1)作为一个功能模块,需要使用时,直接插入运行就行。如在imx6上连接模拟摄像头,先运行模拟摄像头对应的驱动模块 camera.ko文件,然后对应的工程执行文件运行就行。
四、使用.ko 文件
1、加载驱动模块test.ko
(1)方法一
进入test.ko驱动模块文件所在的目录,然后直接 insmod test.ko
(2)方法二
将test.ko文件拷贝到/lib/module/#uname-r#/目录下,这里,#uname -r#意思是,在终端中输入
uname -r后显示的内核版本及名称,例如mini2440中#uname-r#就是2.6.32.2-FriendlyARM。
然后 depmod(会在/lib/modules/#uname -r#/目录下生成modules.dep和modules.dep.bb文件,表明模块的依赖关系)
最后 modprobe test(注意这里无需输入.ko后缀) 即可
注:两种方法的区别
modprobe和insmod类似,都是用来动态加载驱动模块的,区别在于modprobe可以解决load module时的依赖关系,它是通过/lib/modules/#uname -r/modules.dep(.bb)文件来查找依赖关系的;而insmod不能解决依赖问题。也就是说,如果你确定你要加载的驱动模块不依赖其他驱动模块的话,既可以insmod也可以modprobe,当然insmod可以在任何目录下执行,更方便一些。而如果你要加载的驱动模块还依赖其他ko驱动模块的话,就只能将模块拷贝到上述的特定目录,depmod后再modprobe。-什么生成.ko文件
请人帮忙用linux生成个arm平台的.ko文件
在你的joydev.c同目录下面创建一个Makefile文件。然后打开编译,在里面添加内容
obj-m :=joydev.o
KERNEL=/myfile/linux-3.0.50 #这个是你内核的所在目录是什么就填什么
all:
make -C $(KERNEL) M=$(PWD) moduled #这句话要以TAB键开头,不能是空格键。
保存退出
然后在终端敲入make
linux内核模块编译-通过Makefile重命名.ko文件名和模块名
假设模块的源文件为hello.c,源码如下:
使用该文件编译内核模块。
正常情况下,Makefile文件内容如下:
执行 make 命令,生成hello.ko文件。
执行 sudo insmod hello.ko 命令,安装该模块。
执行 lsmod 命令,查看安装的模块。就会看到第一行的就是hello模块。
但是,如果想自定义模块名称为 xmodule ,而不是默认的 hello ,如何实现呢?方法如下:
在Makefile中重命名obj-m并将obj-m的依赖关系设置为原始模块(hello)
修改后的Makefile文件内容如下:
将obj-m设置为 xmodule .o,并使 xmodule .o依赖于 hello .o.
执行 make 命令后,生成 xmodule .ko, 而不是 hello .ko,
安装命令: sudo insmod xmodule.ko
查看命令: lsmod ,就会看到被安装名为 xmodule 的模块。