GNU MIX开发工具包构建错误

时间:2013-09-23 04:35:51

标签: c makefile gnu mix

我正在尝试在Mac OS X 10.8.4上编译the GNU MIX assembly development kit。我通过自制程序安装了依赖项,当我在mdk目录中运行configure时,我收到了一条成功消息:

*** 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失败了,虽然我不知道为什么。我该如何进一步调试?

1 个答案:

答案 0 :(得分:0)

a bug in mdk。它已经被mdk和fixed的开发人员报告过了,但他们还没有发布包含该修复的新版本。希望1.2.8即将发布,不会有这个问题。如果你不能等待,你可以从他们的存储库中获取最新代码并构建它。

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