在linux的内核模式下如何编译和编译“Hello World”代码?
是的,作为标题,我不知道如何在linux的内核模式下编写和编译“Hello World”代码,请帮助我以最简单易懂的方式。谢谢 ! (任何相关的文件也表示欢迎,我只是新来这个)在linux的内核模式下如何编译和编译“Hello World”代码?
可以启动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");
}
哇,这是一个问题!
首先想到Linux内核没有终端,没有与用户的直接交互。 Hello World不能像命令行上的其他用户程序那样被调用。我能想到的最适合的是一个字符设备驱动程序,作为内核模块实现,例如在设备/ dev/helloworld上读取“Hello World”。
我可以指着你读Rubini的书:Linux Device Drivers。它解释并创建了简单的Hello World类型的内核模块。
谢谢大家,我刚刚在内核模式下完成了我的第一个“Hello World”。在这个“编程深度”上玩得很开心:) – 2010-09-17 14:52:38
附加信息:printk函数由内核提供,并打印到诸如/ var/log/messages之类的文件。在Ubuntu中,这是/ var/log/syslog文件。你可以在这个文件中看到hello模块的输出。 另外,感谢fseto指出Linux内核模块编程指南。太棒了。
但你是怎么做到的?你遵循的步骤是什么?你运行了一台虚拟机,然后分配了iso来测试它,或者步骤如何? – YumYumYum 2011-04-08 13:46:42
哦不,我只是在Linux Kernel模式下测试它,而不是从启动。所以Iso和虚拟机是不需要的。对不起,我没有发布我的答案,也许是来自其他在线教学。 – 2011-04-11 17:13:26