linux 編譯單個核心模組

2021-06-26 22:38:05 字數 2001 閱讀 6695

宣告:本文綜合一些網路文摘而成

一,引例:比如音效卡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...