本文將直接了當的帶你進入linux的模組編譯。當然在介紹的過程當中,我也會新增一些必要的注釋,以便初學者能夠看懂。之所以要寫這篇文章,主要是因為從書本上學的話,可能要花更長的時間才能學會整個過程,因為看書的話是乙個學習過程,而我這篇文章更像是乙個培訓。所以實踐性和總結性更強。通過本文你將會學到編譯乙個模組和模組makefile的基本知識。以及載入(解除安裝)模組,檢視系統訊息的一些知識;
宣告:本文為初學者所寫,如果你已經是乙個linux模組編譯高手,還請指正我文章中的錯誤和不足,謝謝
第一步:準備源**
首先我們還是要來編寫乙個符合linux格式的模組檔案,這樣我們才能開始我們的模組編譯。假設我們有乙個原始檔mymod.c。它的原始碼如下:
mymod.c
1. #include /* 引入與模組相關的巨集 */
2. #include /* 引入module_init() module_exit()函式 */
3. #include /* 引入module_param() */
45. module_author("yu qiang");
6. module_license("gpl");
78. static int nbr = 10;
9. module_param(nbr, int, s_irugo);
10.11. static int __init yuer_init(void)
12.{
13. int i;
14. for(i=0; i/parameters/來檢視。在這裡我們是這樣輸入的
在終端輸入:ls /sys/moedle/modules/parameters/
顯示結果:
nbr如果我們的模組載入成功了。最後我們還可以通過modinfo來檢視我們的模組資訊。如下
在終端輸入:sudo modinfo modules.ko
顯示結果:
filename: modules.ko
license: gpl
author: yu qiang
srcversion: 20e9c3c4e02d130e6e92533
depends:
vermagic: 2.6.24-24-generic smp mod_unload 586
parm: nbr:int
本文總結:
本文的相關知識都好像有一點淺嚐轍止的感覺。因為本篇文章主要是通過一條線式方式來講解了模組編寫的相關過程,其實在這個過程中還有很多可以發散的地方。例如:
在寫到module_author("yu qiang")的時候,你應該想到還有
module_description(模組用途的簡單描述);
module_version(模組的版本字串);
module_alias(模組的別名);
...在寫到module_param(nbr, int, s_irugo);的時候,你應該想到還有
export_symbol(name); 可以匯出模組的函式,這也是模組編寫的最終目的
...在用到insmod 和 modinfo的時候。你應該想到還有
depmod 分析可載入模組的依賴性,並生成modules.dep檔案和對映檔案
modprobe linux核心新增刪除模組
...如果要成為一名專業的linux模組開發人員,還要走很多的路,就看各位的了,祝大家學習順利。
我並不是什麼linux相關的專家,我只是乙個普通的linux相關開發人員(在讀),我的目的也很簡單,就是想給大家介紹乙個方法,希望大家在學習的時候不要走過多的彎路。由於個人能力所限難免存在錯誤和缺點,所以請不要介意,如有發現請提出,我立即修改。方便大家學習
linux 編譯c 步驟
直接在命令列中寫入 apt get install g 需取得 root 許可權 取得 root 許可權 ubuntu su r red hat su root suse su root如果上一部出錯,請嘗試寫入 apt get update 待完成之後再寫入 apt get install g 應...
linux核心編譯步驟
b 如果核心已經安裝 usr src 目錄有linux子目錄 跳過如果沒有安裝,在光碟機中放入linux安裝光碟,找到kernel source 2.xx.xx.rpm檔案 xx代表數字,表示核心的版本號 比如redhat linux的rpms目錄是 redhat rpms 目錄,然後使用命令rpm...
linux核心編譯步驟
linux核心編譯,3.10.4核心測試有效,時間2013 7 31。xz d linux 3.10.4.tar.xz 生成乙個新的檔案 linux 3.10.4.tar。tar xvf linux 3.10.4.tar 這裡說明一下 xz格式是兩層壓縮檔案,外面是xz壓縮方式,裡層是tar壓縮方式...