• Neusoft(3)增加自己的内核模块


    Linux版本 Ubuntu12.04LTS,内核版本为3.2.0-26-generic-ape

    具体方法如下:

    1、建立源文件,假设文件目录为path,文件名为hello.c源代码如下:

    #include <linux/init.h>

    #include <linux/module.h>

    #include <linux/kernel.h>

    static int hello_init(void)

    {

    printk(KERN_ALERT "Hello World!/n");

    return 0;

    }

    static void hello_exit(void)

    {

    printk(KERN_ALERT "Bye World!/n");

    }

    module_init(hello_init);

    module_exit(hello_exit);

    MODULE_LICENSE("GPL");

    MODULE_AUTHOR("WFJ");

    注意:这里的头文件需要根据系统内核的具体情况来使用,不是所有版本都用一样的头文件,一开始我的编译错误就是因为头文件使用不当产生的。

    clip_image002

    clip_image004

    2、写Makefile,内容如下:

    obj-m := hello.o

    KERNELBUILD :=/usr/src/linux-headers-3.2.0-23-generic-pae

    default:

    make -C $(KERNELBUILD) M=$(shell pwd) modules

    clean:

    rm -rf *.o *.ko *.mod.c .*.cmd .tmp_versions *.order *.symvers

    这里,KERNELBUILD后面的路径也用根据你自己系统的情况决定,基本是/usc/src/your_kernel_name

    clip_image006

    3、编译源文件,直接make就可以,Makefile里的default已经给出了编译规则,clean的规则也给出了,可以自行修改。

    clip_image008

    命令所在行以Tab开头,提示缺少分隔符。

    clip_image010

    clip_image012

    clip_image014

    发现在linux-headers-…前面多加了一个空格

    clip_image016

    4、加载模块 insmod hello.ko

    5、观察是否成功 dmesg可以看到系统的内核模块信息。

    clip_image018

    6.卸载模块 rmmod hello.ko

    clip_image020

  • 相关阅读:
    k-means算法
    偏差-方差分解Bias-Variance Decomposition
    常见machine learning模型实现
    Bag-of-words模型、TF-IDF模型
    atomic原子操作
    oc 计算 带括号 式子
    oc 基本语法 类 静态变量 常量
    通过文件头标识判断图片格式
    十大经典排序算法最强总结(含JAVA代码实现)(转)
    JPEG格式 介绍
  • 原文地址:https://www.cnblogs.com/shenerguang/p/3398939.html
Copyright © 2020-2023  润新知