zoukankan      html  css  js  c++  java
  • driver makefile

    1、单模块单文件
    //*********************************************
    obj-m := hello.o

    KDIR := /home/akaedu/kernel/linux-2.6.35.7

    all:
        make -C $(KDIR) SUBDIRS=$(PWD) mudules

    .PHONY:clean

    clean:
        -rm -rf *.o *.ko *~ *.mod.*
    //*********************************************

    2、单模块多文件
    //*********************************************
    obj-m := myhello.o
    myhello-objs := hello.o goo.o
    KDIR := /home/akaedu/kernel/linux-2.6.35.7
    (其他同上)
    //*********************************************
    hello.c可直接调用goo.c中的函数,只需在hello.c中声明即可。

    3、多模块
    //*********************************************
    obj-m := hello.o goo.o
    KDIR := /home/akaedu/kernel/linux-2.6.35.7
    (其他同上)

    //*********************************************
    注:其中,goo.c需要导出符号表,EXPORT_SYMBOL(goo),
    供hello.c调用。

    注:在编译模块前,linux源码包(或头文件包)必须经过正确编译,可提供导出符号表。

    安装头文件包:
    sudo apt-get install linux-headers-2.6.32-21-generic
    sudo apt-get install linux-source-2.6.32

    ===================================================================

         #include <linux/init.h>
         #include <linux/module.h>
        
        MODULE_LICENSE(“Dual BSD/GPL”);
        char *who = “world”;
        
        static int hello_init ( void )
        {
            printk(KERN_ALERT “Hello, %s!
    ”, who);
            return 0;
        }
        
        static void hello_exit ( void )
        {
            printk(KERN_ALERT “Goodbye, %s!
    ”, who);
        }
        
        module_init(hello_init);
        module_exit(heool_exit);
        
    //makefile
    ifeq ($(KERNELRELEASE), )
        obj-m    :=hello.o
    else
        KERNELDIR ?= /home/mike/linux-2.6.20
        PWD := $(shell pwd)
    default:
        $(MAKE) –C $(KERNELDIR) M=$(PWD) modules
    clean:
        rm –rf *.o *~ core.depend .*.cmd *.ko *.mod.c
    endif
    
    //注意核对目标平台和交叉编译器:
    ARCH                ?=    arm
    CROSS_COMPILE    ?=    arm-linux-
  • 相关阅读:
    python操作MYSQL时防止SQL注入
    防止SQL注入的一些解决方法
    Gitbook 学习链接
    MySQL_编码utf8_bin和utf8_general_ci的区别
    使用linux脚本shell检查大数据各节点服务是否运行正常
    shell脚本监测elasticsearch集群节点
    Filebeat+Kafka+Logstash+ElasticSearch+Kibana搭建日志收集系统
    python中集合用法大全
    python常用内置函数
    跨模块全局变量的使用问题
  • 原文地址:https://www.cnblogs.com/embedded-linux/p/5572887.html
Copyright © 2011-2022 走看看