初级会员
- 积分
- 81
- 金钱
- 81
- 注册时间
- 2016-12-19
- 在线时间
- 50 小时
|
10金钱
本帖最后由 lsy3500 于 2020-8-5 14:33 编辑
目前正在学习原子哥的imx6ul驱动之路。修改Makefile文件的时候碰到点问题,求各位大哥大姐围观围观,帮忙看下怎么回事,感谢大哥大姐们!!!
每次写一个驱动后需要修改makefile中 obj-m := led0_pinctrl.o语句obj-m后面的名字,觉得麻烦,所以想修改一个通用版,结果修改完以后,执行make命令就不生成ko文件了,具体情况如下:
步骤一、原子哥原来的makefile如下:(备注:5/6行是我加的,注释了)
- 1 KERNELDIR := /home/lsy/practice/arm/zdyz/system/4_NXP_Original_kernel_uboot/linux-imx-rel_imx_4.1.15_2.1.0_ga
- 2 CURRENT_PATH := $(shell pwd)
- 3
- 4 obj-m := led0_pinctrl.o
- 5 #OBJ := $(patsubst %.c,%.o,$(wildcard *.c))
- 6 #obj-m := $(OBJ)
- 7
- 8 build: kernel_modules
- 9 kernel_modules:
- 10 $(MAKE) -C $(KERNELDIR) M=$(CURRENT_PATH) modules
- 11
- 12 .PHONY:
- 13 print:
- 14 @echo "OBJ = $(OBJ)"
- 15 @echo "obj-m = $(obj-m)"
- 16 clean:
- 17 $(MAKE) -C $(KERNELDIR) M=$(CURRENT_PATH) clean
复制代码
这个时候执行make命令,没啥问题,会生成一系列文件和led0_pinctrl.ko文件。如下:- lsy@ubuntu18:/mnt/hgfs/github/linux_drive/zdyz_i.MX6ULL/2_led_pinctrl_gpio/drv$ ls
- led0_pinctrl.c led0_pinctrl.ko led0_pinctrl.mod.c led0_pinctrl.mod.o led0_pinctrl.o Makefile modules.order Module.symvers
复制代码
再执行make print打印obj-m的值,可以看到:obj-m = led0_pinctrl.o,符合预期。显示如下:- lsy@ubuntu18:/mnt/hgfs/github/linux_drive/zdyz_i.MX6ULL/2_led_pinctrl_gpio/drv$ make print
- OBJ =
- obj-m = led0_pinctrl.o
复制代码
步骤二:修改makefile文件中的第四行,替换为5/6行,makefile如下:
- 1 KERNELDIR := /home/lsy/practice/arm/zdyz/system/4_NXP_Original_kernel_uboot/linux-imx-rel_imx_4.1.15_2.1.0_ga
- 2 CURRENT_PATH := $(shell pwd)
- 3
- 4 #obj-m := led0_pinctrl.o
- 5 OBJ := $(patsubst %.c,%.o,$(wildcard *.c))
- 6 obj-m := $(OBJ)
- 7
- 8 build: kernel_modules
- 9 kernel_modules:
- 10 $(MAKE) -C $(KERNELDIR) M=$(CURRENT_PATH) modules
- 11
- 12 .PHONY:
- 13 print:
- 14 @echo "OBJ = $(OBJ)"
- 15 @echo "obj-m = $(obj-m)"
- 16 clean:
- 17 $(MAKE) -C $(KERNELDIR) M=$(CURRENT_PATH) clean
复制代码 然后执行:make print,显示结果如下:- lsy@ubuntu18:/mnt/hgfs/github/linux_drive/zdyz_i.MX6ULL/2_led_pinctrl_gpio/drv$ make print
- OBJ = led0_pinctrl.o
- obj-m = led0_pinctrl.o
复制代码 obj-m的值为led0_pinctrl.o,也就是说obj-m的值和之前的Makefile是一样的。所以推测预期生成ko文件结果也应该是一样的。
然而,我执行make命令后,只生成了led0_pinctrl.c Makefile modules.order Module.symvers这四个文件,如下,
- lsy@ubuntu18:/mnt/hgfs/github/linux_drive/zdyz_i.MX6ULL/2_led_pinctrl_gpio/drv$ make
- make -C /home/lsy/practice/arm/zdyz/system/4_NXP_Original_kernel_uboot/linux-imx-rel_imx_4.1.15_2.1.0_ga M=/mnt/hgfs/github/linux_drive/zdyz_i.MX6ULL/2_led_pinctrl_gpio/drv modules
- make[1]: Entering directory '/home/lsy/practice/arm/zdyz/system/4_NXP_Original_kernel_uboot/linux-imx-rel_imx_4.1.15_2.1.0_ga'
- Building modules, stage 2.
- MODPOST 0 modules
- make[1]: Leaving directory '/home/lsy/practice/arm/zdyz/system/4_NXP_Original_kernel_uboot/linux-imx-rel_imx_4.1.15_2.1.0_ga'
- lsy@ubuntu18:/mnt/hgfs/github/linux_drive/zdyz_i.MX6ULL/2_led_pinctrl_gpio/drv$ ls
- led0_pinctrl.c Makefile modules.order Module.symvers
复制代码
并未生成ko文件,不知道为啥,求各位大哥大姐帮忙看下怎么回事,感谢感谢!!
|
|