2010-09-17 116 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內核模塊編程指南。太棒了。