• linux内核编译环境配置


    linux内核编译环境配置
    如果不是编译内核,只需要安装与内核相匹配的kernel-devel开发包即可。即是/lib/modules/`uname -r`/build -> /usr/src/kernels/`uname -r`指定。

    在yum中,如果直接运行 yum install kernel-devel, 一般安装的开发包版本要高于所使用的内核版本,不能使用。要更改yum 的配置文件,禁掉yum自动寻找新版本的功能。
    即是在/etc/yum.repos.d/fedora-updates.repo 中的[update*]有关的enable=1,全部改为0.
    OK,yum install kernel-devel 即可。

    还有其他方法,以下可供参考:
      http://home.lupaworld.com/home-space-uid-296848-do-blog-id-241587.html 
      http://blog.csdn.net/iczyh/article/details/3564367

    经典的hello word测试

    1. ////# cat hello.c
    2. #include <linux/module.h>
    3. #include <linux/kernel.h>
    4. #include <linux/init.h>
    5. static int __init hl_init( void )
    6. {
    7.     printk("Hello,World! init ");
    8.     return 0;
    9. }
    10. static void __exit hl_cleanup( void )
    11. {
    12.     printk("Goodbye, World! cleanup ");
    13. }
    14. module_init(hl_init);
    15. module_exit(hl_cleanup);
    16. MODULE_LICENSE("GPL");

    经典的由单个c文件产生模块的Makefile。

    1. # cat Makefile
    2. obj-m += hello.o
    3. CURRENT_PATH := $(shell pwd) #模块所在的当前路径
    4. LINUX_KERNEL := $(shell uname -r) #Linux内核源代码的当前版本
    5. LINUX_KERNEL_PATH := /usr/src/kernels/$(LINUX_KERNEL) #Linux内核源代码的绝对路径
    6. all:
    7.         make -C $(LINUX_KERNEL_PATH) M=$(CURRENT_PATH) modules #编译模块了
    8. clean:
    9.         make -C $(LINUX_KERNEL_PATH) M=$(CURRENT_PATH) clean #清理

    编译

    Make
    就产生了hello.ko。

    安装

    insmod hello.ko

    卸载

     rmmod hello

    查看log

     dmesg

    点击(此处)折叠或打开

      1. ................
      2. [12238.051159] Hello,World! init
      3. [12242.458122] Goodbye, World! cleanup
    []中的是时间戳。
     

    OK了,这个环境算好了。

  • 相关阅读:
    设计模式之策略模式
    设计模式之简单工厂模式
    UML 之关系
    C# delegate (001)
    转: 编写高质量代码改善C#程序的157个建议
    通过配置数据库邮件实现发送邮件
    存储过程学习(004)--象写程序一样的写存储过程及调试
    存储过程学习(003)--象写程序一样的写存储过程及调试
    存储过程学习(002)--循环插入数据
    jQ新的事件绑定方法on()
  • 原文地址:https://www.cnblogs.com/timssd/p/4781170.html
Copyright © 2020-2023  润新知