0

我对Make的了解很少。有人告诉我,您在 make 之后放置的所有内容(不包含“-”)都是目标。好吧,我的构建过程失败了。首先有一条线

make path/to/configuration_file

configuration_file不是目标。它是一个自动生成的配置文件,隐藏在目录结构(“path/to”)中,其形式为

#
# Boot Configuration
#

#
# DRAM Component
#
CONFIG_DRAM_TYPE_LPDDR4=y
# CONFIG_DRAM_TYPE_DDR4 is not set
CONFIG_DDR_SIZE=0x80000000

#
# Boot Device
#
# CONFIG_ENABLE_EMMC_BOOT is not set
# CONFIG_ENABLE_NAND_BOOT is not set
CONFIG_ENABLE_SPINAND_BOOT=y
# CONFIG_ENABLE_SPINOR_BOOT is not set
CONFIG_EMMC_ACCESS_8BIT=y
# CONFIG_EMMC_ACCESS_4BIT is not set
# CONFIG_EMMC_ACCESS_1BIT is not set

所以我无法理解这是一个目标。作为参考,当我运行 make 有一个 Makefile 但这个 Makefile 没有引用这个文件。

这条线仍然进展顺利。它失败的路径说

make diags

我已经验证没有“诊断”目标。

我将在此处打印错误文件,该文件可以为我们提供有关正在发生的事情的更多信息

GEN cortex_a/output/Makefile
Init diag test "orc_scheduler" ...
remoteconfig: Failed to generate configure in cortex_a/soc/visio/tests/orc_scheduler!
Makefile:11 recipe for target 'orc_scheduler-init' failed
make[10]: *** [orc_scheduler-init] Error 25

至少我想知道的是如何解释这个错误信息。我不知道“11”或“10”或“25”指的是什么。

4

1 回答 1

0

make 基本上是一个以正确顺序自动运行命令的工具,因此您不必自己输入它们。因此,所有命令 make run 都是您可以在 shell 提示符中键入的命令。这些命令生成的所有错误与您自己键入命令时看到的错误相同。因此,查看 make 以试图理解这些错误是在错误的地方:您必须查看文档以了解调用的任何命令。

“目标”只是一个知道如何构建的文件。事实上,当您键入时make <somefile>,它并没有给您一个错误,即它不知道如何构建<somefile>,这意味着<somefile>就您的 makefile 而言,这是一个目标。

错误消息Makefile:11:只是指文件名Makefile,第 11 行,这是可以找到运行失败的命令的地方。但这可能不会帮助您解决命令失败的问题(除非问题是您使用错误的参数调用它并且您需要调整 makefile 以指定不同的参数)。

失败的命令生成了消息:

remoteconfig: Failed to generate configure in cortex_a/soc/visio/tests/orc_scheduler!

我不知道那是什么意思,但它与制造无关。你需要找出这个remoteconfig命令是什么,它做了什么,以及它失败的原因。不幸的是,它没有显示任何更好的错误消息来说明为什么它未能“生成配置”,但同样,make 对此无能为力。

如果您想了解有关 make 的更多信息,可以查看GNU make 手册(注意,GNU make 只是 make 的一种实现;还有其他的,它们基本相同,但细节不同)。

于 2021-07-12T15:12:02.477 回答