OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5647|回复: 15

imx6ul驱动学习,想修改原子哥的Makefile为通用Makefile,但是执行make后不生成ko文件了

[复制链接]

16

主题

78

帖子

0

精华

初级会员

Rank: 2

积分
81
金钱
81
注册时间
2016-12-19
在线时间
50 小时
发表于 2020-8-4 16:00:14 | 显示全部楼层 |阅读模式
10金钱
本帖最后由 lsy3500 于 2020-8-5 14:33 编辑

目前正在学习原子哥的imx6ul驱动之路。修改Makefile文件的时候碰到点问题,求各位大哥大姐围观围观,帮忙看下怎么回事,感谢大哥大姐们!!!

每次写一个驱动后需要修改makefile中 obj-m := led0_pinctrl.o语句obj-m后面的名字,觉得麻烦,所以想修改一个通用版,结果修改完以后,执行make命令就不生成ko文件了,具体情况如下:

步骤一、原子哥原来的makefile如下:(备注:5/6行是我加的,注释了)
  1. 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. 2 CURRENT_PATH := $(shell pwd)
  3. 3
  4. 4 obj-m := led0_pinctrl.o
  5. 5 #OBJ := $(patsubst %.c,%.o,$(wildcard *.c))
  6. 6 #obj-m := $(OBJ)
  7. 7
  8. 8 build: kernel_modules
  9. 9 kernel_modules:
  10. 10     $(MAKE) -C $(KERNELDIR) M=$(CURRENT_PATH) modules
  11. 11
  12. 12 .PHONY:
  13. 13 print:
  14. 14     @echo "OBJ = $(OBJ)"
  15. 15     @echo "obj-m = $(obj-m)"
  16. 16 clean:
  17. 17     $(MAKE) -C $(KERNELDIR) M=$(CURRENT_PATH) clean
复制代码


这个时候执行make命令,没啥问题,会生成一系列文件和led0_pinctrl.ko文件。如下:
  1. lsy@ubuntu18:/mnt/hgfs/github/linux_drive/zdyz_i.MX6ULL/2_led_pinctrl_gpio/drv$ ls
  2. 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,符合预期。显示如下:
  1. lsy@ubuntu18:/mnt/hgfs/github/linux_drive/zdyz_i.MX6ULL/2_led_pinctrl_gpio/drv$ make print
  2. OBJ =
  3. obj-m = led0_pinctrl.o
复制代码




步骤二:修改makefile文件中的第四行,替换为5/6行,makefile如下:
  1. 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. 2 CURRENT_PATH := $(shell pwd)
  3. 3
  4. 4 #obj-m := led0_pinctrl.o
  5. 5 OBJ := $(patsubst %.c,%.o,$(wildcard *.c))
  6. 6 obj-m := $(OBJ)
  7. 7
  8. 8 build: kernel_modules
  9. 9 kernel_modules:
  10. 10     $(MAKE) -C $(KERNELDIR) M=$(CURRENT_PATH) modules
  11. 11
  12. 12 .PHONY:
  13. 13 print:
  14. 14     @echo "OBJ = $(OBJ)"
  15. 15     @echo "obj-m = $(obj-m)"
  16. 16 clean:
  17. 17     $(MAKE) -C $(KERNELDIR) M=$(CURRENT_PATH) clean
复制代码
然后执行:make print,显示结果如下:
  1. lsy@ubuntu18:/mnt/hgfs/github/linux_drive/zdyz_i.MX6ULL/2_led_pinctrl_gpio/drv$ make print
  2. OBJ = led0_pinctrl.o
  3. obj-m = led0_pinctrl.o

复制代码
obj-m的值为led0_pinctrl.o,也就是说obj-m的值和之前的Makefile是一样的。所以推测预期生成ko文件结果也应该是一样的。

然而,我执行make命令后,只生成了led0_pinctrl.c  Makefile  modules.order  Module.symvers这四个文件,如下,
  1. lsy@ubuntu18:/mnt/hgfs/github/linux_drive/zdyz_i.MX6ULL/2_led_pinctrl_gpio/drv$ make
  2. 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
  3. 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'
  4.   Building modules, stage 2.
  5.   MODPOST 0 modules
  6. 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'
  7. lsy@ubuntu18:/mnt/hgfs/github/linux_drive/zdyz_i.MX6ULL/2_led_pinctrl_gpio/drv$ ls
  8. led0_pinctrl.c  Makefile  modules.order  Module.symvers
复制代码



并未生成ko文件,不知道为啥,求各位大哥大姐帮忙看下怎么回事,感谢感谢!!










最佳答案

查看完整内容[请看2#楼]

驱动下没有这种写法,要是有的话,内核源码下的Makefile文件干嘛那么费事一个一个.o列出来
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

134

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
301
金钱
301
注册时间
2020-5-8
在线时间
20 小时
发表于 2020-8-4 16:00:15 | 显示全部楼层
本帖最后由 无忧花开 于 2020-8-6 19:25 编辑

驱动下没有这种写法,要是有的话,内核源码下的Makefile文件干嘛那么费事一个一个.o列出来

1.png
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165353
金钱
165353
注册时间
2010-12-1
在线时间
2108 小时
发表于 2020-8-5 00:12:35 | 显示全部楼层
帮顶
回复

使用道具 举报

16

主题

78

帖子

0

精华

初级会员

Rank: 2

积分
81
金钱
81
注册时间
2016-12-19
在线时间
50 小时
 楼主| 发表于 2020-8-5 14:34:33 | 显示全部楼层
再顶再顶
回复

使用道具 举报

16

主题

78

帖子

0

精华

初级会员

Rank: 2

积分
81
金钱
81
注册时间
2016-12-19
在线时间
50 小时
 楼主| 发表于 2020-8-5 14:44:31 | 显示全部楼层

原子哥,发帖的时候发现一个问题,要不要看看?

就是我在帖子里面插入代码的时候,经常提交帖子以后,最后一行代码就不见了。也就是说直接显示倒数第二行代码,如下:
  1. lsy@ubuntu18:/mnt/hgfs/github/linux_drive/zdyz_i.MX6ULL/2_led_pinctrl_gpio/drv$ ls
复制代码

(实际上我也粘贴了ls回显的内容,但是却只显示到ls命令这一行。发帖的时候插入代码,提交代码以后会这样,有时候会出现,有时候又不会复现,这是个bug吗?还是我操作方法不对?
回复

使用道具 举报

16

主题

78

帖子

0

精华

初级会员

Rank: 2

积分
81
金钱
81
注册时间
2016-12-19
在线时间
50 小时
 楼主| 发表于 2020-8-5 14:45:48 | 显示全部楼层
lsy3500 发表于 2020-8-5 14:44
原子哥,发帖的时候发现一个问题,要不要看看?

就是我在帖子里面插入代码的时候,经常提交帖子以后, ...

我再试一下:
  1. lsy@ubuntu18:/mnt/hgfs/github/linux_drive/zdyz_i.MX6ULL/2_led_pinctrl_gpio/drv$ ls
  2. led0_pinctrl.c  Makefile  modules.order  Module.symvers
复制代码
回复

使用道具 举报

2

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
90
金钱
90
注册时间
2014-12-11
在线时间
20 小时
发表于 2020-8-5 18:10:45 | 显示全部楼层
帮顶, 官方能不能出一个Makefile的模板, 现在连最简单的在一个.c里面引用.h/调用其他.c的函数都做不到.
总不能所有代码都一个.c到底吧?
回复

使用道具 举报

16

主题

78

帖子

0

精华

初级会员

Rank: 2

积分
81
金钱
81
注册时间
2016-12-19
在线时间
50 小时
 楼主| 发表于 2020-8-6 16:30:06 | 显示全部楼层
拖把 发表于 2020-8-5 18:10
帮顶, 官方能不能出一个Makefile的模板, 现在连最简单的在一个.c里面引用.h/调用其他.c的函数都做不到.
总 ...

应用app的makefile我写了一个,也可以正确执行,不管什么驱动就用这个Makefile就行,驱动名字用命令传参传进去。结果驱动的Makefile同样这样写,却不行。
应用层Makefile如下:
  1. CROSS_COMPILE = arm-linux-gnueabihf-                                                                                          
  2. CC = gcc
  3. RM = rm

  4. SRC := $(wildcard *.c)
  5. APP := $(patsubst %.c,% ,$(wildcard *.c))

  6. $(APP) : $(SRC)
  7. >---$(CROSS_COMPILE)$(CC) $< -o $@

  8. .PHONY:
  9. print:
  10. >---[url=home.php?mod=space&uid=18411]@echo[/url] "APP = $(APP)"
  11. >---@echo "SRC = $(SRC)"
  12. clean:
  13. >---$(RM) $(APP) -rf
复制代码
回复

使用道具 举报

16

主题

78

帖子

0

精华

初级会员

Rank: 2

积分
81
金钱
81
注册时间
2016-12-19
在线时间
50 小时
 楼主| 发表于 2020-8-6 16:48:09 | 显示全部楼层
拖把 发表于 2020-8-5 18:10
帮顶, 官方能不能出一个Makefile的模板, 现在连最简单的在一个.c里面引用.h/调用其他.c的函数都做不到.
总 ...

这是我的make和.c的github工程,需要的话,可以拿去参考~

https://github.com/lishiyuan/lin ... yz_i.MX6ULL/app_led
回复

使用道具 举报

16

主题

78

帖子

0

精华

初级会员

Rank: 2

积分
81
金钱
81
注册时间
2016-12-19
在线时间
50 小时
 楼主| 发表于 2020-8-6 17:01:28 | 显示全部楼层
要沉了吗0.0。。再顶,再顶!
回复

使用道具 举报

0

主题

134

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
301
金钱
301
注册时间
2020-5-8
在线时间
20 小时
发表于 2020-8-6 19:26:33 | 显示全部楼层
拖把 发表于 2020-8-5 18:10
帮顶, 官方能不能出一个Makefile的模板, 现在连最简单的在一个.c里面引用.h/调用其他.c的函数都做不到.
总 ...

例程里的就是了,网上大把的,都是这种写法
回复

使用道具 举报

16

主题

78

帖子

0

精华

初级会员

Rank: 2

积分
81
金钱
81
注册时间
2016-12-19
在线时间
50 小时
 楼主| 发表于 2020-8-19 16:20:31 | 显示全部楼层
无忧花开 发表于 2020-8-4 16:00
驱动下没有这种写法,要是有的话,内核源码下的Makefile文件干嘛那么费事一个一个.o列出来

哦哦,感谢大佬!
回复

使用道具 举报

2

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
90
金钱
90
注册时间
2014-12-11
在线时间
20 小时
发表于 2020-8-28 16:10:21 | 显示全部楼层
无忧花开 发表于 2020-8-6 19:26
例程里的就是了,网上大把的,都是这种写法

买开发板的目的就是为了省时间, 动不动就网上大把的, 那我买这个东西干嘛啊?
回复

使用道具 举报

3

主题

187

帖子

0

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
558
金钱
558
注册时间
2019-5-22
在线时间
267 小时
发表于 2020-8-28 18:35:34 | 显示全部楼层
拖把 发表于 2020-8-28 16:10
买开发板的目的就是为了省时间, 动不动就网上大把的, 那我买这个东西干嘛啊?

我是想过这个问题。我把这个问题分成了两部分看驱动和应用。
我在应用那里使用CMAKE这种方式,通过编写CMAKE语法,去编译应用程序。他的好处比较多可以编译不同路径下.c .h文件。也可以使用和配置共享库和链接库。 还没有完善,没有发布中、
驱动的话,我们现在都是单独调试,生成.ko形式,我也是放在一个.c。到将驱动编译到内核里,在 driver文件下添加这个.c文件。直接编译内核,就不在考虑makefile。板子是一个硬件设备,资料是附带的,资料肯定有不足和缺少的地方,linux东西内容比较多,这就范围更广。
所以论坛建立也是希望大家能够集思广益,共同学习。因为一些话语不要太激动
回复

使用道具 举报

3

主题

187

帖子

0

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
558
金钱
558
注册时间
2019-5-22
在线时间
267 小时
发表于 2020-8-28 18:36:24 | 显示全部楼层
人淡如菊 发表于 2020-8-28 18:35
我是想过这个问题。我把这个问题分成了两部分看驱动和应用。
我在应用那里使用CMAKE这种方式,通过编写 ...

我也看到了你说的NFS挂载的那里,也记录了下来,给其他学习的小伙伴当问题总结
回复

使用道具 举报

0

主题

134

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
301
金钱
301
注册时间
2020-5-8
在线时间
20 小时
发表于 2020-9-1 18:36:56 | 显示全部楼层
本帖最后由 无忧花开 于 2020-9-1 21:25 编辑
拖把 发表于 2020-8-28 16:10
买开发板的目的就是为了省时间, 动不动就网上大把的, 那我买这个东西干嘛啊?

这个只是我自己的观点哈,一万个读者有一万个哈姆雷特,我说的话就一个简单的意思,没有带刀没有带刺的,只是发表个人看法,你不喜欢可以忽略的。
看清楚我的回答的都知道我没啥意思,我只是想表示,这种方法网上也有介绍,来来去去都是这些套路,这个没什么的吧,没必要太敏感的吧(你前面的回复我都看到了,但我心比较大,我这个人只是不喜欢计较,单纯的学习和交流)。
我看我这发言没啥大毛病,请不要无限放大或者随意掺杂自己的个人不好的想法,我不想当背锅侠
我也买了不少原子的板子,作为一学习的人,纯属我个人观点,不喜勿喷好啦。

这话没啥毛病啊,要不我改一下语气吧,就改:

我个人、本人、敝人觉得例程里的就是一个模板了哦,我个人、本人、敝人看网上也是类似的哦,也是类似的写法呢~~~~~~,看上去差不多哦,可能、大概、也许就是这种写法吧~~~~突然觉得表达意思一个样,可是就是要打了很多字了呢
还不如我是下面的一句简单明了



1.png
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-25 17:38

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表