`
hcleon
  • 浏览: 266248 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

笔记:linux 编译 .ko 模块

阅读更多
写个my.c和一个Makefile文件,然后make编译一下,就成功了,生成my.ko

再加载一下insmod my.ko     dmesg|grep module 看到模块初始化时候的打印

卸载模块rmmod my.ko  dmesg|grep module  看模块卸载时候的打印

都是对的,看来以前学的东西还是记得了……再mark一下。

注意事项:

1、内核目录

2、Makefile中obj-m:=my.o 这个和源文件my.c要对应

3、mymodule-objs:=module 这个my也是和my.c对应的

如果源文件为your.c

这两句话就应该改为obj-m:=your.o

yourmodule-objs:=module

4、查看输出的时候 用dmesg输出信息太多,可以用grep过滤一下

dmesg | grep "keywords"

内核源文件

view plaincopy to clipboardprint?
#include <linux/init.h> 
#include <linux/kernel.h> 
#include <linux/module.h> 
static int funcIn(void) 

    printk("in module"); 
    return 0; 

static void funcOut(void) 

    printk("out module"); 
    return; 

module_init(funcIn); 
module_exit(funcOut); 
MODULE_LICENSE("GPL"); 
MODULE_AUTHOR("elfy"); 

Makefile 文件

我linux内核目录为/lib/modules/2.6.31-14-generic/build

具体看自己机器的文件

view plaincopy to clipboardprint?
obj-m:=my.o 
mymodule-objs:=module 
KDIR:=/lib/modules/2.6.31-14-generic/build 
MAKE:=make 
default: 
    $(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules 
clean: 
    $(MAKE) -C $(KDIR) SUBDIRS=$(PWD) clean 
分享到:
评论

相关推荐

    基于fedora9的linux驱动程序hello模块编译笔记.doc

    5. **编译模块**:在`hello.c`和Makefile所在的目录中运行`make`命令,会调用内核构建系统的`make`,编译`hello.c`为内核模块`hello.ko`。 6. **加载和卸载模块**:在纯控制台环境下(可通过`init 3`从图形界面切换...

    基于mini2440的linux驱动程序模块编译测试笔记.pdf

    这篇笔记详细介绍了如何在Linux环境下,基于Mini2440开发板进行驱动程序模块的编译和测试。Mini2440是一款常见的嵌入式硬件平台,常常用于教学和实验,而Linux驱动程序的开发是嵌入式系统开发的重要部分。 1. **...

    基于mini2440的linux驱动程序模块编译测试笔记

    本文主要针对初学者,将探讨如何在基于Mini2440开发板的Linux系统上编译、装载和测试驱动程序模块,旨在分享实践过程中的经验和心得。 首先,Mini2440是一款广泛应用的S3C2440 ARM9开发板,它内置了丰富的外围设备...

    RTL8188EUS_LINUX驱动.rar

    【压缩包子文件的文件名称列表】: "RTL8188EUS_LINUX驱动"这一条信息可能表示压缩包中只有一个文件,即驱动的源码包或者编译好的模块。通常,这样的驱动包会包含以下部分: 1. **源代码**:驱动的核心部分,由C或...

    华为4g模块 pcie me909s-821 linux驱动

    总之,安装华为4G模块PCIe ME909S-821的Linux驱动是一个涉及硬件识别、驱动编译、内核模块加载和网络配置的过程。正确安装和配置驱动后,用户可以在Linux系统中充分利用该模块的4G网络功能,享受高速的数据传输体验...

    rtl8192se_linux.tar.gz_RTL8192SE

    在Linux环境中,驱动通常需要编译进内核或者作为模块加载,以便让系统识别并控制硬件。 安装过程一般包括以下步骤: 1. 解压下载的“rtl8192se_linux.tar.gz”文件,得到源代码目录。 2. 使用`make`命令编译驱动,...

    r8168-8.016.00.zip

    通常,这种文件包含了特定硬件设备(在这种情况下是网卡)所需的驱动程序源代码或编译好的二进制文件,以便在Linux环境下正确识别和运行硬件。 描述中的“LINUX 网卡驱动LINUX 网卡驱动”虽然重复,但进一步强调了...

    RTL8822BS_WiFi_linux_v5.1.7_驱动包

    2. 20171101_RTL88x2BS_WiFi_linux_v5.1.7_24891_COEX20170619-4141:这是主要的RTL8822BS驱动文件,包含了必要的源码和编译脚本,用于在Linux系统上安装和配置。 四、驱动安装步骤 1. 解压驱动包:首先,需要将...

    560_RTL8188EUS_linux_v5.7.6.1_35670.20191106.zip

    3. 编译驱动:进入源码目录,运行Makefile中的编译指令,生成.ko模块。 4. 安装驱动:使用insmod或modprobe命令加载驱动模块到内核,或者通过sudo apt-get install命令(对于Debian/Ubuntu系统)将驱动包安装到系统...

    Linux系统CS网卡驱动.rar_CS LINUX_linux网卡_网卡 驱动_网卡驱动

    编译Linux驱动通常需要makefile,用户需先配置内核使其支持模块编译,然后运行`make`命令生成.ko模块,最后通过`insmod`或`modprobe`命令加载到内核中。 8. **调试技巧**: 调试驱动程序时,可以利用`dmesg`查看...

    内核学习笔记

    ### 嵌入式系统内核学习笔记精要 ...通过以上步骤,不仅能够成功编译 U-Boot 并应用于特定的嵌入式开发板,还能进一步掌握如何将自定义的驱动或模块集成到 Linux 内核中。这对于嵌入式开发人员来说是非常实用的技能。

    嵌入式学习笔记1.1.pdf

    另外,还展示了如何将编译结果(如ko内核模块)复制到NFS共享目录或删除编译时产生的多余文件。Makefile中的特殊变量,如obj-m用于指定需要编译进内核的模块。 2. 条件编译 在开发过程中,可能会遇到需要将同一套...

    rtl8821cs_v5.12.0-8-g39bbb8dd2.20201015_COEX20200730-5151

    ko(Kernel Object)扩展名表示它是为Linux内核编译的模块。 2. **README** 或 **INSTALL** 文件:这些文档通常包含有关如何安装和配置驱动程序的步骤,以及可能遇到的问题和解决方法。 3. **源代码文件**:可能...

    RTL8723bu linux驱动代码

    2. **编译与加载**:配置内核模块编译选项,编译并加载驱动模块,检查是否有编译错误或警告。 3. **设备检测**:确保驱动能够正确识别和绑定到RTL8723bu无线网卡。 4. **功能测试**:连接到无线网络,进行发送、...

    RTL8822BE linux(ubuntu)驱动

    这个过程会生成.ko文件,这是Linux内核模块的编译结果。 4. **安装驱动**:使用`sudo make install`命令将编译好的驱动安装到系统中。这个过程通常需要root权限,因此会提示输入管理员密码。 5. **加载驱动**:...

    linux驱动开发学习笔记

    1. **加载驱动模块**:Linux驱动可以静态编译进内核或动态编译为module。动态加载通常使用`modprobe`或`insmod`命令。`modprobe`会处理模块间的依赖关系,而`insmod`则不考虑依赖性,但可以指定任意路径的模块。加载...

    Linux操作系统上摄像头的使用小技巧

    如果在某些Linux发行版中没有预装linux-uvc驱动,我们可以手动下载并编译。从上述网站下载uvcvideo-r*.tar.gz,解压后运行`make`和`make install`。如果不希望永久安装,也可以通过手工加载模块的方式,例如编写一个...

Global site tag (gtag.js) - Google Analytics