是的,正如标题所说,我不知道如何在Linux内核模式下编写和编译“Hello World”代码,请以最简单易懂的方式帮助我。谢谢!(欢迎提供任何相关文档,我刚开始接触这个)
是的,正如标题所说,我不知道如何在Linux内核模式下编写和编译“Hello World”代码,请以最简单易懂的方式帮助我。谢谢!(欢迎提供任何相关文档,我刚开始接触这个)
/*
* 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内核模块的示例。
补充信息:printk函数由内核提供,它将输出打印到文件中,比如/var/log/messages。在Ubuntu系统中,这个文件是/var/log/syslog。你可以在这个文件中看到hello模块的输出。 此外,感谢fseto指出了Linux内核模块编程指南。它非常棒。