亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 5258 | 回復(fù): 1
打印 上一主題 下一主題

linux模塊module學(xué)習(xí)小結(jié) [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2011-08-04 16:27 |只看該作者 |倒序瀏覽
一、如何寫模塊
源碼
//------------------hello.c-------------------//

#ifndef __KERNEL__
#define __KERNEL__
#endif
#ifndef MODULE
#define MODULE
#endif
#include <linux/init.h>
#include <linux/module.h>
#include <linux/kernel.h>
static int hello_init(void)
{
      printk(KERN_ALERT "Hello World!\n");                      //犯的錯誤:以為源程序漏了個逗號,其實就是沒有逗號,因為KERN_ALERT的宏定義是個字符串。
        return 0;
}
static void hello_exit(void)
{
        printk(KERN_ALERT "Bye World!\n");
}
module_init(hello_init);            //系統(tǒng)的。模塊初始化的
module_exit(hello_exit);            //系統(tǒng)的,模塊卸載的
MODULE_LICENSE("GPL");              //license
MODULE_AUTHOR("Engelbert");         //作者署名
----------------------------------------------------------------------
二、模塊編譯
注意2.4版本和2.6版本差異很大
2.6版本要用如下Makefile
obj-m := hello.o
KDIR := /lib/modules/2.6.9-42.ELsmp/build  #你機子上的linux版本的源代碼路徑
KERNELBUILD :=/lib/modules/`uname -r`/build
default:
make -C $(KDIR) M=$(shell pwd) modules
clean:
rm -rf *.o *.ko *.mod.c .*.cmd .tmp_versions
---------------------------------------------------------------------
編譯常見錯誤:No rule to make target `modules'
原因通常是:KDIR和KERNELBUILD設(shè)置的不對導(dǎo)致。

三、模塊加載
insmod ./hello.ko
常見錯誤:insmod: error inserting './hello.ko': -1 Invalid module format
--------
原因通常是:版本不對導(dǎo)致
查看具體錯誤信息,在
cat /var/log/messages |tail  或者用dmesg命令
里面有具體的原因。例如編譯時候用的內(nèi)核版本不對。這樣再回到編譯那步,確保KERNELBUILD、KDIR是和你要加載的是一樣內(nèi)核版本。

另外:
gcc版本不對,但是又不想再麻煩了。
使用modprobe 命令,這個命令 有-f 參數(shù)。
先 vi modules.dep
(這個文件在路徑 /lib/modules/2.6.9-42.ELsmp/ (和你的KDIR應(yīng)該一樣)下面   #同你機子上的linux版本的源代碼路徑)
最后加上一行:把hello.ko的全路徑加上: /mydir/hello.ko:

命令:
modprobe -f hello           //強制加載了hello模塊,忽略了版本不對問題
modprobe -r hello           //卸載了hello模塊

同時,通過 tail -f /var/log/messages ,
可以看到加載時輸出:Hello World!
        卸載時輸出:Bye World!

論壇徽章:
0
2 [報告]
發(fā)表于 2011-08-04 20:51 |只看該作者
支持分享!
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP