【it168 技術】初次接觸linux驅動程式開發,買了一本《linux裝置驅動程式》,第一件事當然就是構建開發環境了!!
它上面有乙個hello world的列子:
#include
#include
module_license("dual bsd/gpl");
static int hello_init(void){
printk(kern_alert "hello, world/n");
return 0;
static void hello_exit(void){
printk(kern_alert"goodbye, cruel world/n");
module_init(hello_init);
module_exit(hello_exit);
下面我們來看怎麼讓它跑起來:
驅動程式和使用者程式可不一樣,它是作為乙個模組連線到核心模組來執行的,執行在核心空間裡面。
所以要執行我們自己構造的模組,需要自己的系統已經配置好核心樹,然後把目標模組和核心樹連線起來執行!但是我們安裝的linux沒有原始碼(至少我的是這樣),更不要說已經編譯好的核心樹了~
root@jiq-desktop:~#apt-cache search linux-source
root@jiq-desktop:~#apt-get install linux-source-2.6.22
命令解壓即可獲得linux核心的源**:
root@jiq-desktop:/usr/src#tar jxvf linux-source-2.6.32.tar.bz2
(2)然後在linux核心原始碼目錄/usr/src/linux-source-2.6.32目錄下面用老的方法配置好linux核心:
root@jiq-desktop:/usr/src/linux-source-2.6.32#make oldconfig
(3)然後執行:
root@jiq-desktop:/usr/src/linux-source-2.6.32#make bzimage
這個過程大概需要乙個小時左右……執行完成後會在當前目錄下面生成乙個檔案vmlinux.o
(4)然後編譯模組:
root@jiq-desktop:/usr/src/linux-source-2.6.32#make modules
這個過程又是大概乙個小時……[nextpage]
(5)然後便可以安裝模組了:
root@jiq-desktop:/usr/src/linux-source-2.6.32#make modules_install
這個過程大概兩分鐘:
以上步驟完成以後,會在/lib/modules目錄下面生成乙個資料夾linux-2.6.32-24-generic,至此你差不多已經成了,因為你已經構造好了核心樹!!!
下面開始在自己的工程資料夾下面建立兩個檔案:
hello.c(不用說了)
注意裡面各種變數的顏色額~有興趣的讀者可以自己去研究一下這個檔案,裡面唯一和hello.c相關的部分就是
obj-m := hello.o 那一行了!第5行表明了核心樹build目錄的位置。
下面在當前目錄下面執行
root@jiq-desktop:/usr/jiq/driverproject#make
生成以下檔案
然後利用insmod命令將模組插入到核心樹 中:
root@jiq-desktop:/usr/jiq/driverproject#insmod ./hello.ko
模組裝載觸發hello.c的init()方法,輸出hello world,如果沒有的話,是因為其將輸出放到/var/log/syslog中去了。開啟便可以看見你的結果!
解除安裝目標模組命令是:
root@jiq-desktop:/usr/jiq/driverproject#rmmod ./hello.ko
至此你已經成功邁出了linux驅動開發的第一步~
ubuntu 開發環境配置
最基本的vim安裝不用多累贅 sudo apt get install vim網上教程大部分都是新增軟體源,如果有人像我一樣不想新增軟體源的話,可以嘗試以下方法。bz2解壓 tar vxjf sublime text 3 build 3143 x64.tar bz2將資料夾移動到 opt 在 usr...
Ubuntu開發環境配置
預設安裝的ubuntu沒有安裝gcc和其他的開發輔助工具,但是用apt get可以輕鬆的安裝這些軟體 sudo apt get install manpages dev 安裝c語言函式的man檔案 sudo apt get install build essential 完成gcc,g make的安...
ubuntu配置nginx php開發環境
1.安裝nginx sudo apt install nginx 2.安裝php7.0 sudo apt install php7.0 3.安裝php7.0 fpm,這是php和nginx之間的聯結器。sudo apt install php7.0 fpm 4.安裝php7.0 dev和php7.0...