宣告:本文綜合一些網路文摘而成
一,引例:比如音效卡irq 和 io 不對,可到 /usr/src/linux/drivers/sound目錄下.
gcc -o configure configure.c
./configure
選好io,irq 等等,
make
cp sound.o /lib/modules/2.0.34/misc
rmmod sound
insmod sound init_trace=1
測試一下.
直到成功為止.
這樣可比在 /usr/src/linux 下, make menuconfig ;
make dep;make clean;make zimage;.... 好多了.
二,另外幾篇文章的總結:嘗試編譯乙個cmi的音效卡驅動模組
1.在/usr/src/linux-***x/configs目錄下有若干編譯核心所用的配置。我們每次儲存的配置存放於此,選擇我們想要的配置,將它複製到/usr/src/linux-***x目錄下,改名為.config。
cp /usr/src/linux-***x/configs/kernel-2.4.19-arm.config /usr/src/linux-***x/.config
在/usr/src/linux-***x/目錄下的.config檔案中,能看到 config_***x_***x=y或者#config_***x_***x is not set的字樣。找到#config_sound_cmpci is not set這一行,改為config_sound_cmpci=m,其中m的意思就是編譯成模組。然後把其它所有的config_***x_***x=m全部注釋掉。
2.接著在/usr/src/linux-2.4.19目錄下直接執行make modules,僅僅幾秒鐘,編譯就完成了。
千萬不能接著執行make modules_install,它會把系統中現有的模組刪除,只安裝新編譯的模組。
3.進入/usr/src/linux- 2.4.19/drivers/sound/,找到cmpci.o檔案,
cp /usr/src/linux-2.4.19/drivers/sound/cmpci.o /lib/modules/2.4.20/kernel/drivers/sound/
有時需給/lib/modules/2.4.1*/modules.dep檔案加上如下字:/lib/modules/knl_version/kernel/drivers/sound/cmpci.o
執行depmod後,用modprobe cmpci把模組插入核心。再用lsmod命令就可以看到cmpci已經被插入核心了。
編核心難免有的時候忘記了配置某個模組,導致該模組不可用,那是不是必須重新配置核心並重新編譯呢,答案是否定的,完全可以單獨編譯某乙個核心模組。
我在使用最新的fuse-2.8.0-pre1時,發現其中已經沒有fuse模組了,該項目的核心模組看來已經徹底移進核心原始碼中了,而我當前的核心在編譯時並沒有選中fuse模組,於是就產生了本文一開始的需求。
定位fuse模組核心**:/root/linux-2.6.23/fs/fuse/*.c
檢視其下的makefile:
## makefile for the fuse filesystem.
#obj-$(config_fuse_fs) += fuse.o
fuse-objs := dev.o dir.o file.o inode.o control.o
進行如下操作即可單獨編譯fuse模組:
[root@localhost ~]# make config_fuse_fs=m -c /root/linux-2.6.23 m=/root/linux-2.6.23/fs/fuse modules
然後手動將生成的fuse.ko拷貝到/lib/modules/2.6.23/kernel/fs/fuse/fuse.ko
執行depmod -a重新配置依賴關係,以後就可以通過modprobe fuse來載入fuse模組了。
類似其他可編譯成模組的核心**都可以這樣單獨編譯。
Linux核心模組編譯
data mining linux核心模組是一種可被動態載入和解除安裝的可執行程式。通過核心模組可以擴充套件核心功能,核心模組通常用於裝置驅動 檔案系統等。如果沒有核心模組,需要向核心新增功能就需要自發 重新編譯核心 安裝新核心等步驟。核心空間中不止乙個程式試圖訪問驅動程式模組,導致乙個核心塊在沒有...
Linux編譯核心模組
核心模組即驅動的編譯方式 1 本地編譯 2 交叉編譯 makefile主要寫法 本地編譯 obj m hello.o kdir lib modules shell uname r build pwd shell pwd all make c kdir m pwd modules clean rm o...
linux核心模組編譯
1 makefile編寫 ifneq kernelrelease obj m mytest.o mytest objs file1.o file2.o file3.o else kdir lib modules shell uname r build pwd shell pwd default ma...