hello world模組雖小卻是五臟俱全,該有的部分都有了。話不多說,直接上手。
1.編譯linux中執行的核心模組,需要指定到當前系統對應的核心中。一般來說,linux系統的核心模組都會安裝到/lib/modules目錄下,通過「uname -r」命令可以找到對應的核心版本(我的是/lib/modules/4.13.0-36-generic)。
2.找到核心版本後,進入到核心版本資料夾中,建立hello world資料夾,在該資料夾中編寫.c檔案和makefile檔案。
.c檔案:
#include
#include
#include
static int __init my_test_init(void)
printk("my first kernel module init\n");
return 0;
static void __exit my_test_exit(void)
printk("goodbye\n");
module_init(my_test_init);
module_exit(my_test_exit);
module_license(「gpl」);
module_author(「ymy」);
module_description(「my test kernel module」);
module_alias(「mytest」);
makefile檔案:
ifneq ($(kernelrelease),)
obj-m :=mytest.o
else
kdir :=/lib/modules/$(shell uname -r)/build
all:
make -c $(kdir) m=$(pwd) modules
clean:
rm -f *.ko *.o *.mod.o *.mod.c *.symvers *.order
endif
編寫完畢之後,儲存退出。注意makefile中首字母大寫,否則make找不到該檔案。.c檔案的名字和編譯目標檔案的名字要對應,否則會報*** no rule to make target問題。
3.編譯並檢查是否成功
make
file mytest.ko
即編譯成功。
另外,也可以這樣檢查:
4.驗證模組
sudo insmod mytest.ko
dmesg
大功告成!!
另外,還可以利用lsmod命令檢視模組之間的依賴關係:
今天就到這裡了,有問題大家一起來交流哈。
自己動手寫bootloader
原始出處 作者資訊和本宣告。否則將追究法律責任。為了寫乙個bootloader讓板子跑起來,首先我們要知道bootloader是個什麼東東才行。簡單的說,bootloader就是乙個引導核心啟動的一段小 也就是說當啟動完核心之後,它的使命就已經結束。bootloader生命週期 初始化硬體 設定啟動...
自己動手寫CMS
簡易的cms外掛程式,可供借鑑或者擴充套件 流程 定義內容 分類與組織內容 儲存內容 操作控制內容 定義內容 制定目標 確定需要的內容型別 目標使用者定位 確定目標使用者需要何種技術 分類與組織內容 按內容所屬的邏輯層級關係來劃分 按內容的種類來劃分,比如video text audio等等 儲存內...
自己動手寫SpringMVC 四
本文將主要實現dispatcherservlet!之前已經分析過dispatcherservlet主要的任務,分為五個任務,我們從任務一開始開始實現!任務1 把專案中所有的bean掃瞄,進行維護 實現 如下 private void scanpackage string basepackage el...