我如何在编译器输出中找到实际的GCC错误?

问题描述 投票:0回答:2

我正在尝试从基于debian的linux上编译一些旧软件。构建失败:

make[2]: Leaving directory '/home/owner/kallistios/utils/dc-chain/build-gcc-sh-elf-4.7.3'
Makefile:871: recipe for target 'all' failed
make[1]: *** [all] Error 2
make[1]: Leaving directory '/home/owner/kallistios/utils/dc-chain/build-gcc-sh-elf-4.7.3'
Makefile:201: recipe for target 'build-sh4-gcc-pass2' failed
make: *** [build-sh4-gcc-pass2] Error 1
owner@ubuntu:~/kallistios/utils/dc-chain$

但是它没有说出实际错误是什么,或者我如何在输出中找到它。如果我不知道问题出在哪里,那我显然无法解决。

这是完整的输出:http://pasted.co/cff68fa2

linux gcc makefile
2个回答
2
投票

如果您在解码错误输出时遇到问题,首先要做的是不要并行运行构建(不要使用-j标志)。另外,您不应该使用持续(-k)标志。如果您不使用-j-k,则make将一次运行一个配方,并且一旦配方失败就会失败。因此,每当出现错误时,最后打印的命令就是失败的命令。

[此外,如果您想使用-j,并且使用的是新版本的GNU make(4.0或更高版本),则可以添加-Otarget选项,该选项将收集给定目标的所有输出并进行打印原子地在配方的末尾,而不是将不同配方的输出交织在一起。

在您的情况下,似乎配置操作之一失败。由于并行构建输出,很难说出确切的原因。这可能或可能不相关:

kos is an unknown thread package
  ...
Makefile:3810: recipe for target 'configure-gcc' failed
make[2]: *** [configure-gcc] Error 1

0
投票

[您正在尝试使用dc-chain中的KallistiOS实用程序(通常简称为KOS)来编译我非常了解的Sega Dreamcast工具链。

此处的关键错误消息是kos is an unknown thread package。这意味着您在编译sh-elf交叉编译器之前尚未应用KOS补丁。

要解决此问题,您只需在运行其他所有程序之前输入make patch命令即可。请注意,如果仅输入make命令,它将已经应用了补丁。

要完成此答案,您可以检查KallistiOS Nitro存储库,因为此存储库正在处理官方的KOS以及许多社区补丁,包括有关dc-chain实用程序的一些非常有趣的事情,例如完整的文档。

© www.soinside.com 2019 - 2024. All rights reserved.