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-
  • 相关阅读:
    MySQL数据表类型 = 存储引擎类型
    删除链表节点
    链表逆序(反转)
    腾讯2012笔试题
    MysqL数据表类型
    进程间的通信方式
    网络套接字编程学习笔记一
    HTTP报头
    C语言排序算法
    交换排序经典的冒泡排序算法总结
  • 原文地址:https://www.cnblogs.com/embedded-linux/p/5572887.html
Copyright © 2011-2022 走看看