• Hello World模块的编译和运行


    背景:操作系统: ubuntu10.04 
    首先,建立内核树:

        1. 下载内核源码:
            1.搜索源代码: apt-cache search linux-source
             
            2. 选择源代码包并下载: apt-get install linux-source-2.6.32(我选择的是linux-source-2.6.32)
            3. 下载完成后,在/usr/src下,有一个linux-source-2.6.32.tar.bz2,双击解压。
            4. 解压后生成一个新的目录/usr/src/linux-source-2.6.32,所有源代码都在该目录下
       2.切换到源代码目录下,配置内核,选择最快的原版的配置方式: make oldconfig
            root@wyw-desktop:/usr/src/linux-source-2.6.32# make oldconfig
            scripts/kconfig/conf -o arch/x86/Kconfig
            #
            # configuration written to .config
            #

       3. 然后make,这里要花1-2小时,耐心等吧
            root@wyw-desktop:/usr/src/linux-source-2.6.32# make 
            执行完之后,可以看到在当前目录下生成一个新的文件,vmlinux


     然后, 建立hello.c文件和Makefile

        1.编写Hello World模块源代码:

    #include <linux/init.h>  
    #include <linux/module.h>  
    MODULE_LICENSE("Dual BSD/GPL");  
    static int hello_init(void)  
    {  
      printk(KERN_ALERT " Hello,World/n");  
      return 0;  
    }  
      
    static void hello_exit(void)  
    {   
      printk(KERN_ALERT "Goodbye,cruel world/n");  
    }  
      
    module_init(hello_init);  
    module_exit(hello_exit); 
    View Code

      2. 建立Makefile文件,输入以下内容:

    obj-m := hello.o
    KERNELDIR := /usr/src/linux-headers-2.6.32-21-generic
    PWD := $(shell pwd)
    
    modules:
         $(MAKE) -C $(KERNELDIR) M=$(PWD) modules
    modules_install:
         $(MAKE) -C $(KERNELDIR) M=$(PWD) modules_install

    注意:modules和modules_install的下一行以tab键开始。

    最后,编译,运行模块并查看结果

      1. make,编译模块

      2. 加载模块: insmod ./hello.ko
            root@wyw-desktop:~/source/ldd3/hello# insmod ./hello.ko
      3. 查看正在运行的模块: lsmod 
          

      4. 查看模块输出,若终端未能看到模块的输出结果,则: cat /var/log/syslog,在最后一行:
          
      5. 退出模块: rmmod hello

  • 相关阅读:
    CSS 的 outline 属性
    CSS3 的 boxsizing 属性
    CSS 颜色的使用
    动态添加tab(ext)
    showModalDialog()重新加载问题
    DBUtility.SQLServerHelper”的类型初始值设定项引发异常
    终于有了思路
    js判断上传的图片格式
    session丢失 frame
    动态添加tab(ext中的treePanel)
  • 原文地址:https://www.cnblogs.com/wangzhijun/p/3550918.html
Copyright © 2020-2023  润新知