0

我正在尝试在 Mac OS X 10.8.4 上编译GNU MIX 程序集开发工具包。我已经通过自制程序安装了依赖项,当我configure在 mdk 目录中运行时,我收到一条成功消息:

*** GNU MDK 1.2.7 has been successfully configured. ***

Type 'make' to build the following utilities:
    - mixasm (MIX assembler)
    - mixvm (MIX virtual machine)

但是当我运行时make,它会吐出这个错误:

~/Downloads/mdk-1.2.7 > make
make  all-recursive
Making all in po
make[2]: Nothing to be done for `all'.
Making all in intl
make[2]: Nothing to be done for `all'.
Making all in doc
Making all in img
make[3]: Nothing to be done for `all'.
make[3]: Nothing to be done for `all-am'.
Making all in lib
rm -f libreplace.a
ar cru libreplace.a
ar: no archive members specified
usage:  ar -d [-TLsv] archive file ...
  ar -m [-TLsv] archive file ...
  ar -m [-abiTLsv] position archive file ...
  ar -p [-TLsv] archive [file ...]
  ar -q [-cTLsv] archive file ...
  ar -r [-cuTLsv] archive file ...
  ar -r [-abciuTLsv] position archive file ...
  ar -t [-TLsv] archive [file ...]
  ar -x [-ouTLsv] archive [file ...]
make[2]: *** [libreplace.a] Error 1
make[1]: *** [all-recursive] Error 1
make: *** [all] Error 2

看起来ar失败了,虽然我不知道为什么。我该如何进一步调试呢?

4

1 回答 1

0

这是mdk 中的错误。已经向 mdk 的开发人员报告并修复了它,但他们还没有发布包含该修复的新版本。希望 1.2.8 很快就会发布,不会有这个问题。如果你等不及了,你可以从他们的存储库中获取最新的代码并构建它。

ar更具体地说,问题是他们试图创建一个不包含任何内容(“无存档成员”)的库 libreplace.a,这对于要求每个库都包含某些内容的 OS X 版本的程序是不可接受的。为什么有人会尝试创建一个空库?在这种情况下,该库包含仅在您所在的特定操作系统版本尚未提供它们时才需要构建的兼容性功能。在您的情况下,您的操作系统已经提供了所有这些功能,因此不需要构建任何兼容性功能。开发人员要么没有预料到会存在这样一个完整的操作系统,要么可能存在一个不允许空库的系统。修复是在 OS X 上向库中添加一个空函数,以确保它永远不会为空。

于 2014-07-21T08:18:26.687 回答