Autotools 来自github的buildroot添加包,带有自动工具

Autotools 来自github的buildroot添加包,带有自动工具,autotools,buildroot,Autotools,Buildroot,我一直在找,但找不到答案。 我目前正在学习buildroot,在这之前它一直都很好 我正在尝试添加为一个包 这是我的.mk文件 ############################################################# # # coovachilli # ############################################################# COOVACHILLI_VERSION = 1.4 COOVACHILLI_SOURCE

我一直在找,但找不到答案。 我目前正在学习buildroot,在这之前它一直都很好

我正在尝试添加为一个包

这是我的
.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
脚本。我倾向于得出这样的结论