更改我的源代码后,Buildroot 清理我的依赖项

Buildroot clean my dependencies after change my source code

我正在使用 buildroot 制作自定义 linux 图像,它正在运行。

问题是当我 运行 "make" 在更改我的包 "source code" 后完成图像时,因为它清除了我的自定义包依赖项并且所有 header 包含未找到。

我有一个依赖结构:

################################################################################
#
# hello
#
################################################################################

HELLO_VERSION = 1.0
HELLO_SITE = ./package/hello/src
HELLO_SITE_METHOD = local
HELLO_DEPENDENCIES += directfb libogg libvorbis mpg123 sdl2 sdl2_image sdl2_gfx sdl2_ttf sdl2_mixer sdl2_net

define HELLO_BUILD_CMDS
    $(MAKE) CC="$(TARGET_CC)" CXX="$(TARGET_CXX)" LD="$(TARGET_LD)" -C $(@D)
endef

define HELLO_INSTALL_TARGET_CMDS
    $(INSTALL) -D -m 0755 $(@D)/hello $(TARGET_DIR)/usr/bin
    mkdir -p $(TARGET_DIR)/opt/app
    cp -r $(@D)/assets $(TARGET_DIR)/opt/app
endef

$(eval $(generic-package))

当我 运行 "make hello-rebuild && make" 时,我收到错误提示所有 SDL 包含的内容都不存在。

当我遇到这个错误时,我只重建了 "make sdl2-rebuild"、"make sdl2_mixer-rebuild" 等依赖包

任何人都可以帮助我了解如何解决它吗?

谢谢。

通常只需删除您的 output/build/hello-1.0 文件夹并再次键入 make

Buildroot 过去常常使用输出文件夹中的标记文件,它指示已构建了哪些目标。删除这些文件可以让您重建部分图像而无需太多开销。

在post之后其他地方也有同样的答案,一个buildroot用户的正确答案是编译时使用@STAGING目录而不是@TARGET目录。

在我的 makefile 中,我使用 @TARGET_DIR/usr/[folder] 编译它,但正确的是 @STAGING_DIR/usr[folder].

谢谢。