我想派生buildroot,添加一个自定义包,直接在树中添加包的源,并让buildroot使用树中源来构建自定义包。在chapter 17 of the buildroot user manual之后,我已经做到了,但是 buildroot似乎并没有掌握我所做的本地更改。
例如,我构建了整个图像,还构建了自定义应用程序。然后,我进入了自定义应用程序的源代码,并添加了一个故意的语法错误-但随后我再次运行make,它使用我的自定义应用程序的旧版本愉快地生成了图像 。
即使已缓存具有匹配版本的程序包,我如何告诉buildroot查找本地源代码修改?
这些是我添加到buildroot分支中的新文件:
buildroot/
package/
customapp/
customapp.mk
Config.in
customapp/
configure.ac
Makefile.am
README
src/
main.c
Makefile.am
(我还编辑了buildroot/package/Config.in
,以便它获取buildroot/package/customapp/Config.in
文件。所有的Config.in东西只是一个启用customapp的简单布尔值,它们工作正常,因此我将其省略从这个问题开始。)
以下是与构建相关的文件的内容:
buildroot / package / customapp / customapp.mk
CUSTOMAPP_VERSION = 0.1
CUSTOMAPP_SITE = customapp
CUSTOMAPP_SITE_METHOD = local
CUSTOMAPP_AUTORECONF = YES
$(eval $(autotools-package))
buildroot / customapp / configure.ac
AC_INIT([customapp], [0.1], [name@email.tld])
AM_INIT_AUTOMAKE([-Wall -Werror foreign])
AC_PROG_CC
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_FILES([
Makefile
src/Makefile
])
AC_OUTPUT
buildroot / customapp / Makefile.am
SUBDIRS = src
dist_doc_DATA = README
buildroot / customapp / src / Makefile.am
bin_PROGRAMS = customapp
customapp_SOURCES = main.c
答案 0 :(得分:2)
Section 8.3说明了如何重建单个软件包。最简单的方法是使用[package name]-rebuild
目标。在您的情况下,将是:
make customapp-rebuild
您可能还希望在软件包重新构建完成后触发buildroot后构建操作来重新构建目标设备文件系统映像:
make target-post-image
答案 1 :(得分:0)
要重建buildroot软件包,必须删除output / build / customapp-version / .stamp *中的标记文件。最简单的方法是删除整个构建目录。
Buildroot仅依靠.stamp文件来了解需要重建的内容。