完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
在tina/package下新增软件包配置,如果新增软件包的目录太深,将会导致tina检测不到。
比如tina/package/dir1/dir2/dir3/dir4/Makefile可以检测到,但是tina/package/dir1/dir2/dir3/dir4/dir5/Makefile将检测不到。 在Tina/package下新增软件包配置,如果新增软件包的目录太深,将会导致tina检测不到。 比如tina/package/dir1/dir2/dir3/dir4/Makefile可以检测到,但是tina/package/dir1/dir2/dir3/dir4/dir5/Makefile将检测不到。 Tina构建时,将根据一定的规则扫描各个目录下的Makefile文件,这些规则定义在tina/build目录下。 tina/build目录下有一个scan.mk文件,打开后可以看到有一个$(FILELIST)的编译目标,语句比较简单。 主要操作是删除一个临时文件,然后在(SCAN_DIR)下查找目录深度为1到(SCAN_DEPTH)的Makefile文件,找到之后进行一些处理,并写入到(FILELIST),我们可以打开FILELIST文件看看,里面记录了package下目录深度为1到(SCAN_DEPTH)的包目录。 FILELIST:=$(TMP_DIR)/info/.files-$(SCAN_TARGET)-$(SCAN_COOKIE)$(FILELIST): $(OVERRIDELIST) rm -f $(TMP_DIR)/info/.files-$(SCAN_TARGET)-* $(call FIND_L, $(SCAN_DIR)) $(SCAN_EXTRA) -mindepth 1 $(if $(SCAN_DEPTH),-maxdepth $(SCAN_DEPTH)) -name Makefile | xargs grep -aHE 'call $(GREP_STRING)' | sed -e 's#^$(SCAN_DIR)/##' -e 's#/Makefile:.*##' | uniq | awk -v of=$(OVERRIDELIST) -f build/scan.awk > $@所以,差不多知晓其中$(SCAN_DEPTH)就是扫描的深度,在tina/build下查找改SCAN_DEPTH关键字,发现在tina/build/toplevel.mk下有相关设置。 prepare-tmpinfo: FORCE @+$(MAKE) -r -s out/host/.prereq-build $(PREP_MK) mkdir -p tmp/info $(_SINGLE)$(NO_TRACE_MAKE) -j1 -r -s -f build/scan.mk SCAN_TARGET="packageinfo" SCAN_DIR="package" SCAN_NAME="package" SCAN_DEPS="$(TOPDIR)/build/package*.mk $(TOPDIR)/overlay/*/*.mk" SCAN_DEPTH=5 SCAN_EXTRA="" $(_SINGLE)$(NO_TRACE_MAKE) -j1 -r -s -f build/scan.mk SCAN_TARGET="targetinfo" SCAN_DIR="target/allwinner" SCAN_NAME="target" SCAN_DEPS="*.mk $(TOPDIR)/build/kernel*.mk $(TOPDIR)/build/target.mk" SCAN_DEPTH=2 SCAN_EXTRA="" SCAN_MAKEOPTS="TARGET_BUILD=1"可以看到上述prepare-tmpinfo目标中的部分内容中,会对两个目录进行扫描,一个是tina/package目录,最大扫描深度为5; 一个是tina/target/allwinner目录,最大扫描深度为2。 到现在,问题点已经找到。 Tina构建时,将根据一定的规则扫描各个目录下的Makefile文件,这些规则定义在tina/build目录下。 tina/build目录下有一个scan.mk文件,打开后可以看到有一个$(FILELIST)的编译目标,语句比较简单。 主要操作是删除一个临时文件,然后在(SCAN_DIR)下查找目录深度为1到(SCAN_DEPTH)的Makefile文件,找到之后进行一些处理,并写入到(FILELIST),我们可以打开FILELIST文件看看,里面记录了package下目录深度为1到(SCAN_DEPTH)的包目录。 FILELIST:=$(TMP_DIR)/info/.files-$(SCAN_TARGET)-$(SCAN_COOKIE) $(FILELIST): $(OVERRIDELIST) rm -f $(TMP_DIR)/info/.files-$(SCAN_TARGET)-* $(call FIND_L, $(SCAN_DIR)) $(SCAN_EXTRA) -mindepth 1 $(if $(SCAN_DEPTH),-maxdepth $(SCAN_DEPTH)) -name Makefile | xargs grep -aHE 'call $(GREP_STRING)' | sed -e 's#^$(SCAN_DIR)/##' -e 's#/Makefile:.*##' | uniq | awk -v of=$(OVERRIDELIST) -f build/scan.awk > $@ 所以,差不多知晓其中$(SCAN_DEPTH)就是扫描的深度,在tina/build下查找改SCAN_DEPTH关键字,发现在tina/build/toplevel.mk下有相关设置。 prepare-tmpinfo: FORCE @+$(MAKE) -r -s out/host/.prereq-build $(PREP_MK) mkdir -p tmp/info $(_SINGLE)$(NO_TRACE_MAKE) -j1 -r -s -f build/scan.mk SCAN_TARGET="packageinfo" SCAN_DIR="package" SCAN_NAME="package" SCAN_DEPS="$(TOPDIR)/build/package*.mk $(TOPDIR)/overlay/*/*.mk" SCAN_DEPTH=5 SCAN_EXTRA="" $(_SINGLE)$(NO_TRACE_MAKE) -j1 -r -s -f build/scan.mk SCAN_TARGET="targetinfo" SCAN_DIR="target/allwinner" SCAN_NAME="target" SCAN_DEPS="*.mk $(TOPDIR)/build/kernel*.mk $(TOPDIR)/build/target.mk" SCAN_DEPTH=2 SCAN_EXTRA="" SCAN_MAKEOPTS="TARGET_BUILD=1"可以看到上述prepare-tmpinfo目标中的部分内容中,会对两个目录进行扫描,一个是tina/package目录,最大扫描深度为5; 一个是tina/target/allwinner目录,最大扫描深度为2。 到现在,问题点已经找到。 |
|
相关推荐
1个回答
|
|
解决办法
将toplevel.mk中package目录扫描深度SCAN_DEPTH改大就可以了。 这里也需要注意一点,SCAN_DEPTH改大之后,扫描内容变多,会导致编译前的准备工作变慢,因此最好还是不要将软件包放那么深。 |
|
|
|
只有小组成员才能发言,加入小组>>
2611 浏览 0 评论
为了学习内核开发,大佬手搓了一个轻量级操作系统YiYiYa OS
2569 浏览 0 评论
1246 浏览 0 评论
1383 浏览 0 评论
1194 浏览 0 评论
【开源硬件大赛】基于全志V853设计的全功能BTB学习开发板
3430浏览 8评论
3078浏览 5评论
1853浏览 4评论
全志V85x硬件设计大赛作品精选第二期,快来Pick你心目中的最佳方案
87552浏览 3评论
3591浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-10 15:58 , Processed in 0.349110 second(s), Total 45, Slave 40 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号