Linux驅動開發環境配置 核心原始碼樹構造

2021-05-25 09:00:58 字數 1510 閱讀 8801

(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

這個過程又是大概乙個小時。。。

(5)然後便可以安裝模組了:

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

這個過程大概兩分鐘:

以上步驟完成以後,會在/lib/modules目錄下面生成乙個資料夾linux-2.6.32-24-generic,至此你差不多已經成了,因為你已經構造好了核心樹!!!

這個makefile檔案理解如以下:

▲obj-m指出將要編譯成的核心模組列表,表明模組是由目標檔案hello.o組成,.o格式檔案會自動地由相應的.c檔案生成(不需要顯示所有源**檔案)

▲kerneldir表示核心源**的位置。在當前標準情況是鏈結到包含著正在使用核心對應源**的目錄樹位置。uname -r的結果為當前執行的核心版本。

▲pwd指示了當前工作目錄並且是我們自己核心模組的源**位置

▲default是預設的編譯連線目標;即,make將預設執行本條規則編譯目標,除非程式設計師顯示的指明編譯其他目標。這裡的的編譯規則的意思是, 在包含核心源**位置的地方進行make,然後之編譯$(pwd)(當前)目錄下的modules。這裡允許我們使用所有定義在核心源**樹下的所有規則 來編譯我們的核心模組。

▲-c的作用是改變目錄到$(kerneldir)指定的位置;m=的作用是讓該makefile在構造#modules之前返回到模組源**目錄;modules是make的目錄。

下面在當前目錄下面執行

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驅動開發的第一步~

linux 驅動開發環境配置 核心原始碼樹構造

linux驅動開發環境配置 核心原始碼樹構造 初次接觸linux驅動程式開發,買了一本 linux裝置驅動程式 第一件事當然就是構建開發環境了!它上面有乙個hello world的列子 include include module license dual bsd gpl static int he...

Linux驅動開發環境配置 核心原始碼樹構造

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 u...

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 jxv...