源碼環境的搭建 Install源碼 Install源碼 >sudo apt-cache search linux-source linux-source - Linux kernel source with Ubuntu patches linux-source-4.4.0 - Linux kern ...
源碼環境的搭建
-
- Install源碼
>sudo apt-cache search linux-source
linux-source - Linux kernel source with Ubuntu patches
linux-source-4.4.0 - Linux kernel source for version 4.4.0 with Ubuntu patches
因差異這個略有不同,選擇linux-source-4.4.0即可。按照你顯示的版本號而定。
>sudo apt-get install linux-source-4.4.0
安裝完成後,在/usr/src/ 目錄下會出現兩個新文件,一個為linux-source-4.4.0文件夾,另外一個為 linux-source-4.4.0.tar.bz2。
>tar jxvf linux-source-4.4.0.tar.bz2 -C /home/yourdir/Kernel
解壓到你的文件夾下 或者解壓到當前目錄下也行。
在解壓出來的的linux-source-4.4.0目錄下執行配置內核的工作
>sudo make oldconfig //配置內核
>sudo make //編譯內核 此處時間花費較長 若出現類似openssl/opensslv.h No such file or directory 這樣的 錯誤則表明需要安裝 libssl-dev 執行sudo apt-get install libssl-dev
>sudo make modules //編譯模塊
>sudo make modules_install //安裝模塊
第一個.c文件與Makefile文件
- 在自己工作目錄下新建一個文件夾併在此下建立hello.c與Makefile文件
- Makefile文件可以直接用vim Makefile建立,註意M為大寫。
hello.c代碼
1 #include <linux/init.h> 2 #include <linux/module.h> 3 MODULE_LICENSE("Dual BSD/GPL"); 4 static int hello_init(void) 5 { 6 printk(KERN_ALERT "Hello, world\n"); 7 return 0; 8 } 9 static void hello_exit(void) 10 { 11 printk(KERN_ALERT "Goodbye, cruel world\n"); 12 } 13 14 module_init(hello_init); 15 module_exit(hello_exit);
Makefile文件。//註意空格與Tab
obj-m :=hello.o hellomodule-objs :=module #可以把hello這個改成你的命名 KERNELDIR := /lib/modules/$(shell uname -r)/build PWD := $(shell pwd) default: $(MAKE) -C $(KERNELDIR) M=$(PWD) modules
保存後執行 >sudo make
即可生成hello.ko文件。既可以利用此文件來裝載到內核中去了。
裝載命令 >sudo insmod ./hello.ko
裝載完成後可以使用 > lsmod //查看當前安裝的驅動模塊。
> cat /var/log/syslog 中可以直接看到輸出的 hello 與Goodbye // 或者使用 >dmesg | tail 此條命令更簡潔
卸載命令 > sudo rmmod ./hello.ko
第一次配置環境及編寫Makefile的過程中遇到了很多坑,關於驅動的進一步學習還需要參考相關的Linxu驅動開發的相關書籍及教程。
關於文中的hello.c以及Makefile文件中的各種內容為什麼這樣子寫,相信你查看相關的資料之後即可瞭然於胸了。