Linux_Ubuntu下驅動開發環境搭建(14.04, 15親測可行)
Linux_Ubuntu下驅動開發環境搭建
linux下驅動需要編譯核心
1.首先是基本的開發工具,如gcc,gdb,make等
apt-get install build-essential
2.其次是找到你所用的ubuntu的版本號:uname -r
然後檢視你要下載的原始碼包:apt-cache search linux-source 這個命令會得到可以下載的原始碼包
3.下載源:sudo apt-get install linux-source-3.2.0
會預設下載到/usr/src中,進入該資料夾並解壓縮sudo
tar jxvf linux-source-3.2.0.tar.bz2
得到源 /usr/src/linux-source-xxx
4.配置核心:有make oldconfig(命令列),make menuconfig(圖形介面)
在此選用 :oldconfig來配置,進入/usr/src/linux-source-xxx並輸入sudo make oldconfig 在配置的過程中如果需要選y,n,m直接點回車即可
(其中y指的是編譯進核心,n是不編譯,m指的是編譯成模組)
5.然後開始編譯核心:在/usr/src/linux-source-xxx下執行sudo make(需要等幾個小時),然後sudo
bzImage,結束後,可以看到在當前目錄
下生成了一個新的檔案:vmlinux,其屬性為-rwxr-xr-x。
6.編譯模組:還在在當前目錄,make modules
安裝模組:make modules_install
結束後在/lib/modules下生成xxx(版本號)和xxx-generic這兩個目錄
7.檢測是否成功:
編寫一個hello.c測試程式:可以放在/home下自己使用者的目錄下,如/home/danpi/drive
//hello.c
#include<linux/init.h>
#include<linux/module.h>
MODULE_LICENSE("Dual BSD/GPL");
static int hello_init(void)
{
printk(KERN_ALERT "Hello,world\n");
return0;
}
static void hello_exit(void)
{
printk(KERN_ALERT"Goodbye,cruel world\n");
}
module_init(hello_init);
module_exit(hello_exit);
然後編寫Makefile,在當前目錄下新建Makefile檔案
#Makefile
obj-m:=hello.o
KERNELDIR:=/lib/modules/$(shell uname -r)/build
PWD:=$(shell pwd)
modules:
(這裡Tab鍵)$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
注意Makefile中的Tab鍵
然後在/home/danpi/drive目錄下分別執行:
make
insmod hello.c
rmmod hello
但是終端並沒有出現hello world等,因為虛擬機器的緣故,這些資訊已經寫入了:/var/log/syslog 中
cat/var/log/syslog即可檢視
over~