Linux驅動開發HelloWorld

2021-07-09 09:27:21 字數 1272 閱讀 6589

參考文件

/einyboy/p/3324225.html

感謝作者

1、編寫原始碼及makefile檔案

hello.c及makefile檔案位於目錄/home/dreamcs/kernelwork/learn中。

hello.c內容如下:

#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);

makefile檔案內容如下:

#下面這行是檔案makefile的內容,注意m是大寫的

obj-m := hello.o

2.編譯

把hello.c和makefile儲存在同一目錄,然後執行:

make -c /lib/modules/$(uname -r)/build subdirs=$pwd modules

這樣驅動就編譯好了,成果是hello.ko檔案。

注意:makefile一定要寫成makefile,如果寫成makefile就編譯不過。

3、載入驅動檢視執行結果

執行sudo insmod ./hello.ko

在/var/log/syslog檔案中看到如下內容

執行sudo lsmod命令,列出載入的驅動。發現hello驅動在其中。

4.解除安裝驅動

sudo rmmod hello 

看見/var/log/syslog裡顯示了goodbye

5.另一種makefile

#以下是makefile檔案的內容

obj-m := hello.o

kernel_dir := /lib/modules/$(shell uname -r)/build

pwd := $(shell pwd)

all:

make -c $(kernel_dir) subdirs=$(pwd) modules

clean:

rm *.o *.ko

然後執行:make就編譯成功了,命令列不再加引數,很省事。

linux驅動開發

這兩天在公司由於一直沒有太過於繁重的任務,於是便給分配了驅動開發的任務,之前一直不明白驅動開發和普通的嵌入式開發到底有什麼區別,然後有沒有經過系統的學習,於是就一直愣在那裡。不過慢慢的還是經過查資料,雖然 沒有編寫出來,但是對於系統的一些東西學習的終於有了一定的了解,感覺這個十分的重要,也為了給自己...

Window下開發環境安裝和Hello World

ios培訓 我的c語言筆記,期待與您交流 在ios開發中,objective c是在c語言的基礎上的擴充套件,是一種物件導向的程式語言。並依次進行安裝,安裝路徑最好是在根目錄下沒有中文以及空格的資料夾中,我的安裝路徑是d gnustep 2.啟動shell 開啟開始 程式 gnustep shell...

Window下開發環境安裝和Hello World

objective c是在c語言的基礎上的擴充套件,是一種物件導向的程式語言。這裡假設讀者有物件導向的程式設計基礎。package required?stable unstable notes gnustep msys system required 0.28.1 msys mingw system...