Windows XP Windows 7 Windows 2003 Windows Vista Windows教程綜合 Linux 系統教程
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟件教程
 Windows教程網 >> Linux系統教程 >> Linux教程 >> linux設備驅動第三版的使用問題

linux設備驅動第三版的使用問題

日期:2017/2/7 14:40:35      編輯:Linux教程
 

剛看linux 設備驅動的時候,下載了書中附帶的驅動程序,一直想用gcc命令,而不用makefile編譯驅動,結果第一次用gcc編譯的時候就出席了問題,下面是問題:

開始我用這個命令:

$ gcc -O2 -DMODULE -D__KERNEL__ -c test.c

不行,好多什麼錯誤,應該沒有連接到內核的庫文件,之後我就用附帶的makefile,反正只要make一下,也出現了問題,下面是問題的所在:

make的是scull這個文件夾下面的程序,出錯的消息是:

[root@azuo scull]# make

make -C /lib/modules/2.6.15-1.2054_FC5/build M=/myfile/examples/scull LDDINC=/myfile/examples/scull/../include modules

make: *** /lib/modules/2.6.15-1.2054_FC5/build: 沒有那個文件或目錄。 停止。

make: *** [modules] 錯誤 2

我就到/lib/modules/2.6.15-1.2054_FC5這個路徑下去查看了有build這個文件但是顯示是鏈接出錯,我查看了build的屬性,它的鏈接目標是/usr/src/kernels/2.6.15-1.2054_FC5-i686,我再去/usr/src下查看,確實沒有/kernels/2.6.15-1.2054_FC5-i686,有的 是redhat這個文件夾,裡面有幾個文件夾,BUILD,RPMS,SPECS,SOURCES,SRPMS。而且裡面都是空的。

我是這麼處理的,直接下了一個2.6.20的內核版本,之後解壓到/usr/src下面就有一個文件夾叫linux2.6.20,直接進入,開始編譯內核,具體怎麼編譯參考我的一篇文章叫編譯內核的。

完成以後,再去 /lib/modules/2.6.15-1.2054_FC5/build 下面看就可以發現build文件不是一個錯誤的連接了,而是一個文件夾的連接,我估計應該是差不多了。

有了心理保障就直接再去scull文件夾下面去make一下,果然可以通過了,沒有什麼問題,可以看到make的經過裡面告訴說長生了scull.ko還有其他的東西,其實這個就是驅動的可執行文件了。

按照LDD3作者說的,insmod scull.ko

可以通過,但是沒有反應哦。並沒有出現那些要打印的語句,真的想不通,不行我又去看了一下LDD3,我的英文版本的,也就是電子文檔,在第一個驅動的介紹裡面就有,怎麼編譯,和怎麼查看結果,他裡面說了如果用的是文字控制端,就可以看見,如果用的是在xwindow下的控制斷就看不到,就要去/var/log/messages裡面看,我在兩個裡面都編譯和加載了模塊都可以看到了。呵呵成功了特地分享一下。

還有一個問題就是好像作者的makefile是可以通用的,呵呵,只要改一個叫obj之後的那個什麼點o的名字吧,我是這麼做的。

其實也不一定要升級和編譯內核,可以去下載相應的內核的rpm包,因為安裝系統的時候,沒有安裝內核開發的包。下載一個kernel-devel-2.6.15-1.2054_FC5.i686.rpm就可以了。

從網上下載:

http://download.fedora.redhat.com/pub/fedora/linux/core/5/i386/os/Fedora/RPMS/kernel-devel-2.6.15-1.2054_FC5.i686.rpm

在安裝光盤裡面也應該有。

不過這個我已經編譯了內核才曉得的,具體可以解決問題不我也不曉得。

呵呵,加油!!!
 

Copyright © Windows教程網 All Rights Reserved