多年来我一直使用Buildroot,而且我总能设法找到解决我遇到的障碍的方法。但是这个让我走了一圈。
我已经将一个git-sourced python工具作为主机包添加到我的Buildroot构建中,用于ARM目标。我已经完成了package / Config.in.host和package / toolname / Config.in.host以及package / toolname / toolname.mk文件的工作。一切看起来都井然有序。我已将工作与add_new_package.wizard输出的内容进行了比较。
新选项显示在menuconfig中。
它不能用作制作目标,虽然我确实有我所包含的目标端包,它们是有效的制作目标。即我可以跑: 制作target-side-package-name 那些包装都很好。
我无法运行: make host-side-package-name ,因为我收到错误“没有规则来制作目标”。
所以我必须对主机包做错了,尽管我显然正在使用目标包做正确的事情。
所有内容都指向Buildroot,只是忽略我的主机包,而不是将其粘贴到menuconfig中。我在网上搜索的时间导致没有一篇关于有人遇到同样问题的帖子。我错过了一些我会想到的明显的东西。
我的问题是 - 我可以做什么调试,在哪里可以找出让Buildroot正确识别我的新包的原因?
编辑:我相信我现在明白问题的一部分是构建顺序,也许我可以解决依赖指令的一个问题。我首先构建了依赖于主机包的目标包。我认为常识会首先处理主机包,但这显然不是真的。编辑:发布.mk文件
TOOLNAME_VERSION = 2
TOOLNAME_SITE = $(call github,devname,toolname,$(TOOLNAME_VERSION))
TOOLNAME_SETUP_TYPE = setuptools
TOOLNAME_LICENSE = GPL-3.0
TOOLNAME_LICENSE_FILES = LICENSE
HOST_TOOLNAME_DEPENDENCIES = host-python-library
$(eval $(host-python-package))
TOOLNAME = $(HOST_DIR)/usr/bin/toolname
正如我之前暗示的那样,它现在运行得很好所以我知道它大部分设置正确,剩下的问题是make目标丢失了。根据Buildroot手册,我应该有一个。
我现在发现缺少的make目标实际上是不可能构建依赖于此的其他包。依赖包的构建现在失败了,因为在它所依赖的工具名包上“没有规则” TARGET_PACKAGE_DEPENDENCIES =工具名称
答案 0 :(得分:1)
你可以发布你的toolname.mk吗?听起来你忘了添加$(eval $(host-python-package))行。
答案 1 :(得分:0)
哈利路亚!答案是 make目标名称不是工具名,而是host-toolname 。问题的根本原因是Buildroot文档的8.12.5节中没有提到这种细微差别。我在第17章研究包依赖关系时偶然发现了答案,它确定了该特定情况的正确用法。