linux - make <package> 意味着新的提取

标签 linux embedded buildroot

我用以下两个文件创建了一个 Buidroot 包:

.mk

AVM_VERSION = $(BR2_PACKAGE_AVM_TARGET)-V00.00.01
AVM_SITE_METHOD = git
AVM_SITE = ssh://git@myownserver.com/App/AVM.git

AVM_INSTALL_TARGET = YES

define AVM_BUILD_CMDS   
    $(TARGET_CC) $(TARGET_CFLAGS) -o $(@D)/AVM $(@D)/avm.c    
endef

define AVM_INSTALL_STAGING_CMDS 
    $(MAKE) DESTDIR=$(STAGING_DIR) -C $(@D) install
endef

define AVM_INSTALL_TARGET_CMDS
    $(INSTALL) -D -m 0755 $(@D)/AVM $(TARGET_DIR)/usr/bin/avm
endef

$(eval $(generic-package))

配置.in

config BR2_PACKAGE_AVM
    bool "AVM"
    help
      Application for embedded platform.

config BR2_PACKAGE_AVM_TARGET
    string "AVM package target"
    depends on BR2_PACKAGE_AVM
    help
        Define board

我使用上面的.mk文件成功编译了包。但是,因为我想将源代码修改为输出/构建,所以我注意到以下行为(仅删除 .stamp_built 之后):

$ make AVM
>>> AVM v00.00.01 Extracting
...
>>> AVM v00.00.01 Patching
>>> AVM v00.00.01 Configuring
>>> AVM v00.00.01 Building
...

即使没有删除 .stamp,我也获得了一个新的 Extracting, Patching, Configuring, Building...

怎么了?

编辑:

问题似乎来自 AVM_VERSION 定义。当我按其值交换 $(BR2_PACKAGE_AVM_TARGET) 时,我得到 make: Nothing to do for « AVM ».

这个名为 $(BR2_PACKAGE_AVM_TARGET) 的变量已被定义到与开发板关联的 defconfig 文件中作为 BR2_PACKAGE_AVM_TARGET="AVM2.3"

最佳答案

您没有qstrip BR2_PACKAGE_AVM_TARGET,所以就make而言,引号是版本的一部分。 make 查找文件 output/build/AVM-"AVM2.3"-V00.00.01/.stamp_extracted 但该文件不存在,因此提取步骤将再次被执行。所有其他步骤相同。请注意,下载步骤被跳过,因为 tarball 存在于 dl 目录中。

要修复,使用

AVM_VERSION = $(call qstrip, $(BR2_PACKAGE_AVM_TARGET))-V00.00.01

关于linux - make <package> 意味着新的提取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34044660/

相关文章:

linux - Sed 在 shell 脚本中用 Control-A 替换制表符

linux - 在 Suse Enterprise 10.0 上安装 MonoDevelop

linux - 如何在 curl 中自动恢复中断的下载?

memory - NAND 闪存接口(interface) ARM9 MTD 分区未生成

linux - uclibc 和 arm 支持上的 Node.js

linux -/lib/libc.so.0 buildroot 错误

linux - 将 buildroot 与 BeagleBone github 存储库集成

java - 使用 .jar 中的类时出现 NoClassDefError

c++ - 没有缓冲区的 Sobel 边缘检测

embedded - 有关 ISR 期间中断的问题