如何通过makefile将驱动程序,即.ko文件安装或复制到特定位置?

时间:2014-08-07 12:18:21

标签: linux-kernel makefile driver

这是我的makefile:

ifneq ($(KERNELRELEASE),)
    obj-m := dmcdus_dd.o
else
    KDIR := /usr/src/linux-headers-3.13.0-24-generic/

    all:
        $(MAKE) INSTALL_MOD_DIR=kernel/drivers/input/touchscreen -C $(KDIR) M=$$PWD modules_install
endif

clean: 
    rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c .tmp_versions sample Module.symvers

我已经指定了我需要的路径,我必须使用INSTALL_MOD_DIR&移动我的dmcdus_dd.ko文件。通过modules_install安装它。当我输入" make"在控制台中,我在控制台中获得以下结果:

make INSTALL_MOD_DIR=kernel/drivers/input/touchscreen -C /usr/src/linux-headers-3.5.0-49-generic/ M=$PWD modules_install
make[1]: Entering directory `/usr/src/linux-headers-3.5.0-49-generic'
DEPMOD  3.5.0-49-generic
make[1]: Leaving directory `/usr/src/linux-headers-3.5.0-49-generic'

但是当我去位置" /lib/modules/3.5.0-49-generic/kernel/drivers/input/touchscreen"我没有在该目录中看到dmcdus.ko文件...如何将我的驱动程序复制到该位置?

2 个答案:

答案 0 :(得分:1)

首先安装之前,您需要使用make -C $(KDIR) M=$(PWD) modules制作模块。 如果你想在makefile中做一点改动,那么按以下方式写:

ifneq ($(KERNELRELEASE),)
        obj-m := dmcdus_dd.o
else
        KDIR := /usr/src/linux-headers-3.13.0-24-generic/

all:
        make -C $(KDIR) M=$(PWD) modules #I've changed makefile here
        $(MAKE) INSTALL_MOD_DIR=kernel/drivers/input/touchscreen -C $(KDIR) M=$$PWD modules_install
endif
clean: 
        rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c .tmp_versions sample Module.symvers
  • 并确保您有权将文件复制到目标(/ input / 触摸屏)文件夹。如果没有,那就改变它。

答案 1 :(得分:0)

下面的makefile足以构建和安装模块

obj-m := dmcdus_dd.o
KDIR := /usr/src/linux-headers-3.13.0-24-generic/

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

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

如果指定INSTALL_MOD_DIR,则模块将移动到该目录

  

make INSTALL_MOD_DIR = kernel / drivers / input / touchscreen -C $(KDIR)M = $$ PWD modules_install