• Linux学习(5)-模块的装载配置


    #1.编写MakeFile
    ```
    obj-m:=xxx.o  //名称可改


    //以下内容可以不用动

    CURRENT_PATH:=$(shell pwd)


    LINUX_KERNEL:=$(shell uname -r)

    LINUX_KERNEL_PATH:=/usr/src/linux-headers-$(LINUX_KERNEL)


    all:
            make -C $(LINUX_KERNEL_PATH) M=$(CURRENT_PATH) modules


    clean:
            make -C $(LINUX_KERNEL_PATH) M=$(CURRENT_PATH) clean

    ```
    #2.编写模块函数
    ```
    //一个简单的helloworld函数

    #include <linux/init.h>
    #include<linux/kernel.h>
    #include <linux/module.h>


    MODULE_LICENSE("GPL");//许可证

    static int __init lkm_init(void) //入口函数
    {
            printk("Hello,Linux! ");
            return 0;
    }


    static void __exit lkm_exit(void)//出口函数
    {
            printk("Good bye! ");
    }


    module_init(lkm_init);//入口点
    module_exit(lkm_exit);//出口点





    ```
    #3.插入内核模块
    `sudo insmod xxx.ko`


    #4.打印日志信息
    因为其结果不可能直接打印在终端,所以需要打印日志信息来查看结果
    `dmesg`

  • 相关阅读:
    jQuery实现动态搜索显示功能
    面试
    Struts1和Struts2的区别和对比(完整版)
    JAVA调用增删改的存储过程
    Spring MVC入门
    jQuery Ajax通用js封装
    js ==与===区别
    shell脚本awk
    C++对象模型初窥
    再见,2021
  • 原文地址:https://www.cnblogs.com/Alex0001/p/13171691.html
Copyright © 2020-2023  润新知