我正在尝试从基于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
如果您在解码错误输出时遇到问题,首先要做的是不要并行运行构建(不要使用-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
[您正在尝试使用dc-chain
中的KallistiOS实用程序(通常简称为KOS)来编译我非常了解的Sega Dreamcast工具链。
此处的关键错误消息是kos is an unknown thread package
。这意味着您在编译sh-elf
交叉编译器之前尚未应用KOS补丁。
要解决此问题,您只需在运行其他所有程序之前输入make patch
命令即可。请注意,如果仅输入make
命令,它将已经应用了补丁。
要完成此答案,您可以检查KallistiOS Nitro存储库,因为此存储库正在处理官方的KOS以及许多社区补丁,包括有关dc-chain
实用程序的一些非常有趣的事情,例如完整的文档。