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-
  • 相关阅读:
    with 上下文协议
    __del__
    描述符使用
    理解并发(Concurrency)和并行(Parallelism)
    理解ThreadLocal
    理解死锁的概念(实例)
    遇到的几种设计模式的应用
    面试题02
    操作 mysql练习14-16题
    mysql练习11-13题
  • 原文地址:https://www.cnblogs.com/embedded-linux/p/5572887.html
Copyright © 2011-2022 走看看