Autotools 来自github的buildroot添加包,带有自动工具
我一直在找,但找不到答案。 我目前正在学习buildroot,在这之前它一直都很好 我正在尝试添加为一个包 这是我的Autotools 来自github的buildroot添加包,带有自动工具,autotools,buildroot,Autotools,Buildroot,我一直在找,但找不到答案。 我目前正在学习buildroot,在这之前它一直都很好 我正在尝试添加为一个包 这是我的.mk文件 ############################################################# # # coovachilli # ############################################################# COOVACHILLI_VERSION = 1.4 COOVACHILLI_SOURCE
.mk
文件
#############################################################
#
# coovachilli
#
#############################################################
COOVACHILLI_VERSION = 1.4
COOVACHILLI_SOURCE = $(COOVACHILLI_VERSION).tar.gz
COOVACHILLI_SITE = https://github.com/coova/coova-chilli/archive
COOVACHILLI_INSTALL_STAGING = YES
COOVACHILLI_INSTALL_TARGET = NO
COOVACHILLI_CONF_OPTS = --prefix=/usr --libdir=/usr/lib --localstatedir=/var --sysconfdir=/etc --enable-miniportal --with-openssl --enable-libjson --enable-useragent --enable-sessionstate --enable-sessionid --enable-chilliredir --enable-binstatusfile --enable-statusfile --disable-static --enable-shared --enable-largelimits --enable-proxyvsa --enable-chilliproxy --enable-chilliradsec --with-poll --enable-dhcpopt --enable-sessgarden --enable-ipwhitelist --enable-redirdnsreq --enable-miniconfig --enable-layer3 --enable-chilliscript --enable-eapol --enable-uamdomainfile --enable-modules --enable-multiroute
COOVACHILLI_DEPENDENCIES = openssl make libtool
$(eval $(autotools-package))
我一直在学习一些教程,也在学习
但无论我做什么,包括这个软件包,我总是以:/bin/bash:./configure:没有这样的文件或目录
我已尝试取消选择此软件包,并且make
成功。我被困在
>>coovachilli 1.4配置部分时出现了这个错误
我检查了buildroot>dl
文件夹,可以看到它成功下载了文件。
另外,在buildroot>output>build
上,我可以看到coovachilli-1.4
文件夹中有文件
但无论我做什么,包括这个套餐,我最终都会得到:
/bin/bash: ./configure: No such file or directory
这似乎是因为您使用的tarball确实不包含configure
脚本。该项目的GitHub源存储库和发布tarball不包含一个或多个其他自动工具生成的文件,而是提供一个“引导程序”
”脚本,运行自动工具生成这些文件
这种方法遵循了不将派生文件提交到源存储库的原则,但这对于自动工具来说是一种有点过于简单的分析,因为
- Autotools的一个关键设计点是,它们是软件包维护人员的工具,而不是只想构建软件包的人的工具。运行自动工具不是构建过程的正常部分
- 因此,由基于Automake的构建系统构建的分发包包含构成构建系统的所有生成文件。第三方工具希望您将基于Autotools的分发包交给他们,而第三方工具希望您将其包括在内是正确的
- 此外,与生成脚本和其他文件的自动工具输入文件相比,自动工具生成的脚本和其他文件更具可移植性。特别是,Autotools输入并不总是完全兼容不同版本的Autotools
无论如何,假设您使用GitHub提供的tarball,您需要在解包和启动到configure
之间运行bootstrap
脚本。请注意,从buildroot的角度来看,这会在您的构建中引入对(至少)Autoconf和Automake的依赖
但无论我做什么,包括这个套餐,我最终都会得到:
/bin/bash: ./configure: No such file or directory
这似乎是因为您使用的tarball确实不包含configure
脚本。该项目的GitHub源存储库和发布tarball不包含一个或多个其他自动工具生成的文件,而是提供一个“引导程序”
”脚本,运行自动工具生成这些文件
这种方法遵循了不将派生文件提交到源存储库的原则,但这对于自动工具来说是一种有点过于简单的分析,因为
- Autotools的一个关键设计点是,它们是软件包维护人员的工具,而不是只想构建软件包的人的工具。运行自动工具不是构建过程的正常部分
- 因此,由基于Automake的构建系统构建的分发包包含构成构建系统的所有生成文件。第三方工具希望您将基于Autotools的分发包交给他们,而第三方工具希望您将其包括在内是正确的
- 此外,与生成脚本和其他文件的自动工具输入文件相比,自动工具生成的脚本和其他文件更具可移植性。特别是,Autotools输入并不总是完全兼容不同版本的Autotools
无论如何,假设您使用GitHub提供的tarball,您需要在解包和启动到configure
之间运行bootstrap
脚本。请注意,从buildroot的角度来看,这将(至少)对Autoconf和Automake的依赖引入到您的构建中。@John answer引导我找到正确的路径。除此之外,我接受他的回答
#############################################################
#
# coovachilli
#
#############################################################
COOVACHILLI_VERSION = 1.4
COOVACHILLI_SOURCE = $(COOVACHILLI_VERSION).tar.gz
COOVACHILLI_SITE = https://github.com/coova/coova-chilli/archive
COOVACHILLI_INSTALL_TARGET = YES
COOVACHILLI_CONF_OPTS = --prefix=/usr --libdir=/usr/lib --localstatedir=/var --sysconfdir=/etc --enable-miniportal --with-openssl --enable-libjson --enable-useragent --enable-sessionstate --enable-sessionid --enable-chilliredir --enable-binstatusfile --enable-statusfile --disable-static --enable-shared --enable-largelimits --enable-proxyvsa --enable-chilliproxy --enable-chilliradsec --with-poll --enable-dhcpopt --enable-sessgarden --enable-ipwhitelist --enable-redirdnsreq --enable-miniconfig --enable-layer3 --enable-chilliscript --enable-eapol --enable-uamdomainfile --enable-modules --enable-multiroute
COOVACHILLI_DEPENDENCIES = openssl make libtool
define COOVACHILLI_PRE_CONFIGURE_BOOTSTRAP
cd $(@D)/ && ./bootstrap
endef
COOVACHILLI_PRE_CONFIGURE_HOOKS += COOVACHILLI_PRE_CONFIGURE_BOOTSTRAP
$(eval $(autotools-package))
我只需要添加PRE_CONFIGURE_HOOKS
来调用bootstrap,一切顺利 @John answer引导我走上正确的道路。除此之外,我接受他的回答
#############################################################
#
# coovachilli
#
#############################################################
COOVACHILLI_VERSION = 1.4
COOVACHILLI_SOURCE = $(COOVACHILLI_VERSION).tar.gz
COOVACHILLI_SITE = https://github.com/coova/coova-chilli/archive
COOVACHILLI_INSTALL_TARGET = YES
COOVACHILLI_CONF_OPTS = --prefix=/usr --libdir=/usr/lib --localstatedir=/var --sysconfdir=/etc --enable-miniportal --with-openssl --enable-libjson --enable-useragent --enable-sessionstate --enable-sessionid --enable-chilliredir --enable-binstatusfile --enable-statusfile --disable-static --enable-shared --enable-largelimits --enable-proxyvsa --enable-chilliproxy --enable-chilliradsec --with-poll --enable-dhcpopt --enable-sessgarden --enable-ipwhitelist --enable-redirdnsreq --enable-miniconfig --enable-layer3 --enable-chilliscript --enable-eapol --enable-uamdomainfile --enable-modules --enable-multiroute
COOVACHILLI_DEPENDENCIES = openssl make libtool
define COOVACHILLI_PRE_CONFIGURE_BOOTSTRAP
cd $(@D)/ && ./bootstrap
endef
COOVACHILLI_PRE_CONFIGURE_HOOKS += COOVACHILLI_PRE_CONFIGURE_BOOTSTRAP
$(eval $(autotools-package))
我只需要添加PRE_CONFIGURE_HOOKS
来调用bootstrap,一切顺利 源tarball实际上是否包含configure
脚本,并且位于Buildroot所期望的位置?并不是所有的软件包都有一个,也有一些有,但要把它放得更深一些。@JohnBollinger是的,我相信它有。。。因为使用我的主机操作系统,我可以进行配置等。。。我在想我的.mk
文件中缺少了什么。。我认为buildroot正在Coovachilli目录之外的某个地方调用configure,我非常了解Autotools和make
,但buildroot根本不知道。话虽如此,您对COOVACHILLI\u SOURCE
的定义看起来有些奇怪:它扩展到了1.4.tar.gz
。如果这确实是错误的,那么它将解释为什么找不到configure
脚本,而不是为什么make
会尝试configure
,而不是之前出错。@JohnBollinger buildroot正确下载了tar文件。。。甚至在正确的位置提取了它。但不确定它调用configure的位置为何似乎是错误的。我查看了GitHub存储库和其中提供的分发tarball,它们不包含configure
脚本。我倾向于得出这样的结论