1. 內核外模塊編譯步驟:
(1)進入模塊所在目錄,在Makefile裏面添加要編譯的模塊如:obj-m = test.o.
(2)make -C $Kernel M=`pwd` modules:把模塊放到指定的內核下進行編譯即在指定的內核下構建模塊(注意模塊要加載入哪個內核就在哪個內核中編譯:比如我的開發板使用的內核版本爲linux-2.6.28,那modules就要到在linux-2.6.28下編譯),其中$kernel=內核源文件的絕對路徑,此處換成你的內核源文件的路徑;`pwd`=表示模塊當前絕對路徑。不作修改,自動獲取modules當前路徑。即可生成.ko文件。
(3)make -C $Kernel M=`pwd` modules clean:清除編譯好的文件.ko與.o文件和相關生成的文件
(4)make -C $Kernel M=`pwd` modules_install INSTALL_MOD_PATH=$NFSROOT:安裝modules到指定的目錄。
(5)若以上操作比較頻繁的時候,可以寫一個bash shell腳本mkmod.sh執行 mv mkmod.sh mkmod; chmod 755 mkmod修改它的權限,把mkmod拷貝到/usr/bin/目錄下,只要執行mkmod, mkmod clean, mkmod install就可以完成以上操作過程,bash shell 代碼如下:
#!/bin/bash
KERNEL=/kernel/linux-2.6.28
#KERNEL=/lib/modules/`uname -r`/build
NFSROOT=/nfsroot
if [ $# -eq 0 ]
then
make -C $KERNEL M=`pwd` modules
elif [ "$1" == "clean" ]
then
make -C $KERNEL M=`pwd` modules clean
elif [ "$1" == "install" ]
then
make -C $KERNEL M=`pwd` modules
make -C $KERNEL M=`pwd` \
modules_install INSTALL_MOD_PATH=$NFSROOT
else
echo "Usage:"
echo " mkmod"
echo " mkmod clean"
echo " mkmod install"
fi