日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux驱动开发环境配置(内核源码树构造)

發(fā)布時間:2025/4/16 linux 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux驱动开发环境配置(内核源码树构造) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

來源:季義欽BLOG 作者:季義欽

?

初次接觸Linux驅(qū)動程序開發(fā),買了一本《Linux設(shè)備驅(qū)動程序》,第一件事當然就是構(gòu)建開發(fā)環(huán)境了!!!

它上面有一個Hello World的列子:

//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");
return 0;
}

static void hello_exit(void){
printk(KERN_ALERT"Goodbye, cruel world/n");
}

module_init(hello_init);
module_exit(hello_exit);

下面我們來看怎么讓它跑起來:

驅(qū)動程序和用戶程序可不一樣,它是作為一個模塊連接到內(nèi)核模塊來運行的,運行在內(nèi)核空間里面。

所以要運行我們自己構(gòu)造的模塊,需要自己的系統(tǒng)已經(jīng)配置好內(nèi)核樹,然后把目標模塊和內(nèi)核樹連接起來運行!但是我們安裝的Linux沒有源碼(至少我的是這樣),更不要說已經(jīng)編譯好的內(nèi)核樹了~

(1)下載Linux源碼:

首先查看可以下載的Linux內(nèi)核源碼包

root@jiq-desktop:~#apt-cache search linux-source

然后選定要下載的源碼包:

root@jiq-desktop:~#apt-get install linux-source-2.6.22


?下載完成后,在/usr/src下,文件名為:linux-source-2.6.32.tar.bz2,是一個壓縮包,然后用

命令解壓即可獲得Linux內(nèi)核的源代碼:

root@jiq-desktop:/usr/src#tar jxvf linux-source-2.6.32.tar.bz2

?

?

(2)然后在Linux內(nèi)核源碼目錄/usr/src/linux-source-2.6.32目錄下面用老的方法配置好Linux內(nèi)核:

root@jiq-desktop:/usr/src/linux-source-2.6.32#make oldconfig



(3)然后執(zhí)行:

root@jiq-desktop:/usr/src/linux-source-2.6.32#make bzImage

這個過程大概需要一個小時左右。。。執(zhí)行完成后會在當前目錄下面生成一個文件vmlinux.o



(4)然后編譯模塊:

root@jiq-desktop:/usr/src/linux-source-2.6.32#make modules

這個過程又是大概一個小時。。。
?

?


(5)然后便可以安裝模塊了:

root@jiq-desktop:/usr/src/linux-source-2.6.32#make modules_install

這個過程大概兩分鐘:

?

?

?以上步驟完成以后,會在/lib/modules目錄下面生成一個文件夾linux-2.6.32-24-generic,至此你差不多已經(jīng)成了,因為你已經(jīng)構(gòu)造好了內(nèi)核樹!!!

?

下面開始在自己的工程文件夾下面建立兩個文件:

hello.c(不用說了)

Makefile(它需要能夠找到內(nèi)核樹,然后將目標模塊鏈接上去):

?

?注意里面各種變量的顏色額~有興趣的讀者可以自己去研究一下這個文件,里面唯一和hello.c相關(guān)的部分就是

obj-m := hello.o 那一行了!第5行表明了內(nèi)核樹build目錄的位置。

下面在當前目錄下面執(zhí)行
root@jiq-desktop:/usr/jiq/DriverProject#make

生成以下文件

?

?


然后利用insmod命令將模塊插入到內(nèi)核樹 中:

root@jiq-desktop:/usr/jiq/DriverProject#insmod ./hello.ko

模塊裝載觸發(fā)hello.c的init()方法,輸出hello world,如果沒有的話,是因為其將輸出放到/var/log/syslog中去了。打開便可以看見你的結(jié)果!

卸載目標模塊命令是:

root@jiq-desktop:/usr/jiq/DriverProject#rmmod ./hello.ko

至此你已經(jīng)成功邁出了Linux驅(qū)動開發(fā)的第一步~

?

轉(zhuǎn)載于:https://www.cnblogs.com/armlinux/archive/2010/12/20/2390871.html

《新程序員》:云原生和全面數(shù)字化實踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

總結(jié)

以上是生活随笔為你收集整理的Linux驱动开发环境配置(内核源码树构造)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。