2010-09-17 86 views
4

是的,作为标题,我不知道如何在linux的内核模式下编写和编译“Hello World”代码,请帮助我以最简单易懂的方式。谢谢 ! (任何相关的文件也表示欢迎,我只是新来这个)在linux的内核模式下如何编译和编译“Hello World”代码?

+0

但你是怎么做到的?你遵循的步骤是什么?你运行了一台虚拟机,然后分配了iso来测试它,或者步骤如何? – YumYumYum 2011-04-08 13:46:42

+0

哦不,我只是在Linux Kernel模式下测试它,而不是从启动。所以Iso和虚拟机是不需要的。对不起,我没有发布我的答案,也许是来自其他在线教学。 – 2011-04-11 17:13:26

回答

7

可以启动Here

/* 
* hello-1.c - The simplest kernel module. 
*/ 
#include <linux/module.h> /* Needed by all modules */ 
#include <linux/kernel.h> /* Needed for KERN_INFO */ 

int init_module(void) 
{ 
    printk(KERN_INFO "Hello world 1.\n"); 

    /* 
    * A non 0 return means init_module failed; module can't be loaded. 
    */ 
    return 0; 
} 

void cleanup_module(void) 
{ 
    printk(KERN_INFO "Goodbye world 1.\n"); 
} 
3

哇,这是一个问题!

首先想到Linux内核没有终端,没有与用户的直接交互。 Hello World不能像命令行上的其他用户程序那样被调用。我能想到的最适合的是一个字符设备驱动程序,作为内核模块实现,例如在设备/ dev/helloworld上读取“Hello World”。

我可以指着你读Rubini的书:Linux Device Drivers。它解释并创建了简单的Hello World类型的内核模块。

+0

谢谢大家,我刚刚在内核模式下完成了我的第一个“Hello World”。在这个“编程深度”上玩得很开心:) – 2010-09-17 14:52:38

1

附加信息:printk函数由内核提供,并打印到诸如/ var/log/messages之类的文件。在Ubuntu中,这是/ var/log/syslog文件。你可以在这个文件中看到hello模块的输出。 另外,感谢fseto指出Linux内核模块编程指南。太棒了。