編譯核心模組Hello World V1 0

2021-06-12 15:16:58 字數 1426 閱讀 5365

寫這個筆記主要是加深自己的印象,對於makefile

剛了解一點,現在突然冒出乙個

makefile

擴充套件,要理清楚一步步來正解了。

準備我使用了linux-3.7

核心,並在使用

x86的預設配置進行了編譯,也編譯了核心模組,並且製作的

initrd

,已經安裝到現在用的

rhel6.3

中了。這些都是前提。這個編譯好的核心**在

/opt/kangear/kernel

資料夾下。

然後見到了乙個hello word!

級別的核心模組程式。**如下:

#include #include module_license("dual bsd/gpl");

static int hello_init(void)

static void hello_exit(void)

module_init(hello_init);

module_exit(hello_exit);

這個筆記的重點如何一步步過度到ldd3

上那個makefile

。對於已經在

linux

核心**中的模組,如果要編譯成模組方式的話,很簡單,在

make menuconfig

中將其選為 

m ,在

make modules

時就自動將它編譯為模組。

為了和上邊說的變化不大,但是是又不改變現在核心中的東西。我的第乙個版本的makefile

這樣寫的:

obj-m := hello.o
這樣不理解的點就少了,主要弄清楚這個obj-m

是什麼意思了,這裡邊的

m就相當於上邊的那個 

m,就代表

module

的意思,還有

obj-y

呢。這個先深入到這。

然後將這個兩個檔案放到kangear_modul

目錄下,將這個

kangear_modul

放到核心源**目錄下。

編譯時在/opt/kangear/kernel/linux-3.7

下。用以下命令

(也可以後邊加上「

vi = 1

」看詳細過程):

make m=./kangear_module/  modules

然後就可以這就順利編譯了,我的過程如下:

v1.0可以這樣看makefile之間的關係:

linux 核心模組載入 HelloWorld

1。建立hello目錄 mkdir hello 2。進入hello目錄 cd hello 3。編寫hello.c include include module license gpl static int hello init void static void hello exit void mod...

Linux核心模組初探 HelloWorld

本文通過學習宋寶華老師的 linux裝置驅動開發詳解 第四章而寫的學習筆記,感謝這本好書 因為linux核心架構龐大,元件很多,如果我們把所有需要功能都編譯到linux核心中,就會導致核心很大,並且當我們要在現有核心中新增或刪除功能時都要重新編譯核心。linux使用了模組 module 這一種機制,...

核心編譯 模組編譯

目前是嵌入式 linux 的初學者感覺有所體會 1.從demo 學起 tiny 6410 上的開發,我的任務不斷是新增小模組。交叉編譯器,以及其它一系列 tool chains 可直使用產商提供的工具。避免過多細節的好處在於,你可以從整體處著手你從書本學到的理論知識。2.kernel 編譯其它很簡單...