为什么 MoarVM 在 Mac OS X 上抱怨 "built for archive which is not the architecture being linked"?

Why does MoarVM complain about "built for archive which is not the architecture being linked" on Mac OS X?

我正在尝试从 GitHub 上的最新版本和 MoarVM.org 上的下载构建 Moar。我不断收到有关第三方库的错误消息:

ld: warning: ld: warning: ld: warning: ignoring file 3rdparty/libatomic_ops/src/libatomic_ops.a, file was built for archive which is not the architecture being linked (x86_64): 3rdparty/libatomic_ops/src/libatomic_ops.aignoring file 3rdparty/tinymt/libtinymt.a, file was built for archive which is not the architecture being linked (x86_64): 3rdparty/tinymt/libtinymt.aignoring file 3rdparty/sha1/libsha1.a, file was built for archive which is not the architecture being linked (x86_64): 3rdparty/sha1/libsha1.a

这类似于 OSX : File was built for archive which is not the architecture being linked (i386)(以及许多其他答案不充分的问题)。我知道有些东西已经在为错误的架构构建这些,所以请跳过提供该答案。

我清理了目录,删除了所有内容并重新开始,告诉 Configure.pl 我正在 运行ning 达尔文,以及各种用户应该知道的其他事情。我从 MoarVM.org 下载了 tarball,它应该是 repo 中的 2105.12 标签。我 运行 遇到了与 rakudobrew 相同的问题。

让我知道您想了解我的系统;这是基本的 Mac OS X 设置。

我也将其归档为 MoarVM issue 334,但问题队列似乎没有得到太多关注。

来自我在 MoarVM issue 中的评论。

我想 Sinan 我已经弄明白了(虽然主要是思南)。

当我运行配置时,它识别darwin并选择clang作为编译器。 AR 仅设置为 ar,但它首先会在我的路径中找到 gnu 版本,而不是 clang 附带的版本。当我们将搜索路径更改为第一个 ar 是 Apple 的时,一切正常。

但是,尝试Configure.pl --toolchain gnu还是选择了clang而不是gcc。我并不特别关心它使用哪一个(至少现在),只要其他工具来自正确的集合即可。我知道我可以单独将带有 args 的路径设置为 Configure.pl,但我不希望必须这样做。我敢打赌大多数人甚至都不知道 ar 是什么,也不知道为什么他们会把一个放在另一个之上。

我对此没有任何建议。我的问题有一个解决方案,但 Configure 可以更聪明地解决这个问题。你可以关闭这个问题(也许打开一个新的问题更聪明)。