2015-11-02 62 views
1

我有工作内核模块,我使用insmod/modprobe命令手动安装,如阅读书籍所了解的。不过我想知道是否有办法编译后自动执行 - 所以基本上如何自动化命令insmod/modprobe我们可以用make文件安装内核模块

我modprobe的有相关的文件thread_module.o以及

我make文件至今

运行后
obj-m := wakeup_counter.o 
obj-m += thread_module.o 
$INSTALL_MOD_PATH = /lib/modules/2.6.32-5-amd64/ 

all: 
    make -C /lib/modules/2.6.32-5-amd64/build M=$(PWD) modules 

install: 
    make $(INSTALL_MOD_PATH) =/build modules_install 
clean: 
    make -C /lib/modules/2.6.32-5-amd64/build M=$(PWD) modules 

输出:make安装

[email protected]:/home/xyz/Desktop/Drivers/symbols# make install 
make -C /lib/modules/2.6.32-5-amd64/build M=/home/xyz/Desktop/Drivers/symbols modules_install 
make[1]: Entering directory `/usr/src/linux-headers-2.6.32-5-amd64' 
    INSTALL /home/xyz/Desktop/Drivers/symbols/thread_module.ko 
    INSTALL /home/xyz/Desktop/Drivers/symbols/wakeup_counter.ko 
    DEPMOD 2.6.32-5-amd64 
make[1]: Leaving directory `/usr/src/linux-headers-2.6.32-5-amd64' 

编辑:通过意见后去和https://www.kernel.org/doc/Documentation/kbuild/modules.txt我试图添加安装命令,但我没有看到构建路径中的任何模块 - 也是在高层次,我得到我们在cmd提示符中输入的内容,我们输入Makefile,但如果有人可以举一个例子,它会帮助我理解好基本情况来引用。命令shell指令

+1

安装软件通常是由'让install'命令执行。只需在makefile中创建“安装”目标,并将所有需要的操作放入其配方中即可。 – Tsyvarev

+0

是的,并从它调用'make ... modules_install'。 – 0andriy

+0

任何可以在命令shell中运行的命令,都可以将该操作添加为makefile中目标的规则。 – cm161

回答

1
obj-m := wakeup_counter.o 
obj-m += thread_module.o 

KDIR = /lib/modules/2.6.32-5-amd64/build 

all: 
    make -C $(KDIR) M=$(PWD) modules_install 

clean: 
    make -C $(KDIR) M=$(PWD) clean 

例被用作规则的Makefile:

install: 
    modprobe wakeup_counter 
    modprobe thread_module 
+0

感谢您的答案 - 我需要做一些小的改变,而不是modules_install - 我不得不将其更改为modules ..但是我必须将其更改为模块..但是按照您的步骤指出,我更了解一些更好的东西..非常感谢回答 – thedreamer

1

提高张贴@ cm161答案为未来用户以突出其工作对我来说

下面具体步骤Makefile使用以下步骤

第1步:make(只需创建命令) - 用于创建模块,即.ko文件和相关文件

第2步:使安装

第3步:现在你的lsmod,你应该能够看到新的模块

obj-m := wakeup_counter.o 
obj-m += thread_module.o 

KDIR = /lib/modules/2.6.32-5-amd64/build 

all: 
    make -C $(KDIR) M=$(PWD) modules 
    cp wakeup_counter.ko /lib/modules/2.6.32-5-amd64/ 
    cp thread_module.ko /lib/modules/2.6.32-5-amd64/ 

install: 
    modprobe wakeup_counter 
    modprobe thread_module 

clean: 
    make -C $(KDIR) M=$(PWD) clean 
+0

您可以自动执行复制。ko通过为'all'目标添加'cp'规则来创建文件,如下所示:all: make .... cp wakeup_counter.ko $(DEST_DIR)/。 cp thread_module.ko $(DEST_DIR)/。 DEST_DIR = /lib/modules/2.6.32-5-amd64 – cm161

+0

True !! - 相应地更新了答案 – thedreamer

相关问题