当前位置:  技术问答>linux和unix

第一个简单的内核编程实验:hello.c

    来源: 互联网  发布时间:2016-02-27

    本文导语:  内核编程入门,就以最为简单的hello.c为例。     环境:Redhat 9.0,内核版本2.4.20-8。       虽然现在2.6.x的内核很早就就发布了,但是毕竟很多公司还在使用2.4.x的内核。作为新手,从2.4.x的内核入手是可行的。原...

内核编程入门,就以最为简单的hello.c为例。
    环境:Redhat 9.0,内核版本2.4.20-8。
 
    虽然现在2.6.x的内核很早就就发布了,但是毕竟很多公司还在使用2.4.x的内核。作为新手,从2.4.x的内核入手是可行的。原因有如下几条:
    (1)2.4.x比较成熟。可能你遇到的绝大多数问题,网上都有解决方案。在这个过程中,你可以节省大量的时间,同时还可以对比网上的解决方案,加深认识,总结解决问题的方法,调整自己的学习方法和思路。
    (2)事物的发展总不可能是一蹴而就的。了解发展的历程,对深入理解问题有很大的好处。所以在2.4.x的内核的基础上学习2.6.x的内核,就能够体会到2.6.x的内核在哪些方面要出色,或者为什么要采取这种改进技术。相信理论清晰了,即时2.6.x的内核也会容易上手。
 
    下面总结了第一个内核程序hello.c的学习过程。
 
(一)第一阶段:尽量简单
 
/*
 * hello.c
 */

#define MODULE
#include 

int init_module(void)
{
        printk("Hello World!n");
        return 0;
}

void cleanup_module(void)
{
        printk("Goodbye!n");
}
 

执行,出现错误一:

[root@lqm drivers]# gcc -c hello.c
[root@lqm drivers]# insmod hello.o
hello.o: kernel-module version mismatch
        hello.o was compiled for kernel version 2.4.20
        while this kernel is version 2.4.20-8.
 

    这是因为内核源代码版本和编译器版本不一致造成的。

(1)编译器版本/usr/include/linux/version.h

#define UTS_RELEASE "2.4.20"
#define LINUX_VERSION_CODE 132116
#define KERNEL_VERSION(a,b,c) (((a) 

    
 
 

您可能感兴趣的文章:

  • daemon 是属于 用户态编程 还是 内核态编程? 关于内核编程的书/资料介绍些好吗?
  • 我想学习linux桌面编程,那么有没有必要学习linux的内核以及内核的相关编程呢?
  • 想看linux内核源代码,另外手头上有一本《unix环境高级编程》,需要先把《unix环境高级编程》看完之后再看内核吗?
  • 那位能给出一个2.6.18内核下,内核态编程的小例子?
  • 请问LINUX编程(内核编程)是在什么环境下用什么IDE编?
  • *******是不是对内核模块编程然后再重新编译内核就可以把此模块整合到linux系统中
  • 初学内核编程,在内核态下怎么用socket通信?
  • linux内核编程,具体指什么,是不是就是驱动开发 ?
  • Linux内核编程
  • java/j2ee iis7站长之家
  • Linux 9内核编程
  • 请问linux内核编程的能不能调用#include <stdio.h>的函数
  • 请教高手:如何学习内核编程?
  • 想要学习Linux内核,有必要先学Linux编程吗??
  • 请教:想学LINUX内核编程,请指点
  • linux内核编程问题
  • Linux 内核模块编程问题!!!!
  • ubuntu下的内核模块编程
  • 请问哪里有比较全的Linux内核编程API和数据结构的文档?
  • 内核编程问题求教!!!!
  • linux内核设计实验——动态模块设计
  • 设计一个在/proc中实现clock文件的模块,该clock文件只支持文件的read操作,该操作访问内核变量xtime,很简单的一个内核模块实验,我第一
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Linux内核中影响tcp三次握手的一些协议配置
  • Fedora Core 2自带的内核升级程序下载下来内核后,要不要再编译一遍内核?
  • TCP协议四次断连过程介绍及Linux内核协议栈中相关设置项
  • 进程内核栈和操作系统内核栈的关系
  • CentOS 6内核升级:下载编译启用新内核版本详细过程
  • Linux中内核线程不访问内核态地址空间?
  • Linux进程的内核栈和用户栈概念,相互关系及切换过程
  • 2.6内核下编译2.4内核
  • linux内核中的likely宏和unlikely宏介绍及用法
  • 谁能提供kgdb内核补丁内核模块的下载
  • CentOS 6.5 下载地址及如何升级内核(kernel)版本到 3.10.28
  • 编译新内核后怎么进入原来内核
  • Linux下c/c++开发之程序崩溃(Segment fault)时内核转储文件(core dump)生成设置方法
  • 请问linux中如何判断内核是否已经启动。(在内核中写程序)
  • docker使用的技术之Container内核原理介绍
  • 内核模块跟内核版本不匹配????????
  • 请教:如何安装新内核(rpm包)而不同原来得内核冲突?? 在线等待!!
  • linux为什么要升级内核?升级内核有何作用?
  • 内核升级后,如何在新的内核中加载显卡驱动?
  • 内核源码和结果make过的内核源码有什么区别
  • 不重新编译内核能修改内核函数吗?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3