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