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

时间:2015-12-19 20:35:40

标签: linux gcc makefile

我试图在基于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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

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

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

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

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