首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mac OS X 10.8的Mercury编译错误

Mac OS X 10.8的Mercury编译错误
EN

Stack Overflow用户
提问于 2012-12-13 23:53:33
回答 2查看 376关注 0票数 1

我在Mac上编译水星时遇到了问题。我运行的是MacOSX10.8,安装了Xcode4.5,还有命令行工具。

到目前为止,我做了什么:

我下载了tar.gz文件,将其解压缩,在该文件夹中运行./configure,然后使用make PARALLEL=-j2 install命令(就像./configure之后所说的那样)。

在该步骤中,我在命令行中获得了以下内容:

代码语言:javascript
复制
MMAKE_DIR=`pwd`/scripts scripts/mmake  MMAKEFLAGS=-j2 DESTDIR= install
cd scripts && PATH=../scripts:../util:$PATH MMAKE_VPATH=. MMAKE_DIR=../scripts DESTDIR= ../scripts/mmake -j2
make[2]: Nothing to be done for `default_target'.
cd util && PATH=../scripts:../util:$PATH MMAKE_VPATH=. MMAKE_DIR=../scripts DESTDIR= ../scripts/mmake -j2 mfiltercc
make[2]: `mfiltercc' is up to date.
gc_grade=`scripts/ml --grade none.gc --print-gc-grade`; \
    cd boehm_gc && PATH=../scripts:../util:$PATH MMAKE_VPATH=. MMAKE_DIR=../scripts DESTDIR= ../scripts/mmake -j2 GC_GRADE=$gc_grade
MAKEFLAGS=""; export MAKEFLAGS; \
    PATH=../util:$PATH make -j2 -j1 \
        GRADE=none.gc GC_GRADE=gc \
        AR=ar RANLIB=ranlib \
        libgc.a libgc.dylib \
        FINAL_INSTALL_MERC_GC_LIB_DIR=/usr/local/mercury-11.07.2/lib/mercury/lib \
        dylib
make[3]: `libgc.a' is up to date.
make[3]: `libgc.dylib' is up to date.
make[3]: Nothing to be done for `dylib'.
cd runtime && PATH=../scripts:../util:$PATH MMAKE_VPATH=. MMAKE_DIR=../scripts DESTDIR= ../scripts/mmake -j2
make[2]: Nothing to be done for `default_target'.
cd util && PATH=../scripts:../util:$PATH MMAKE_VPATH=. MMAKE_DIR=../scripts DESTDIR= ../scripts/mmake -j2
make[2]: Nothing to be done for `default_target'.
cd robdd && PATH=../scripts:../util:$PATH MMAKE_VPATH=. MMAKE_DIR=../scripts DESTDIR= ../scripts/mmake -j2
make[2]: Nothing to be done for `default_target'.
cd library && PATH=../scripts:../util:$PATH MMAKE_VPATH=. MMAKE_DIR=../scripts DESTDIR= ../scripts/mmake -j2
../scripts/mgnuc --grade none.gc        --       -c tree234.c -o tree234.o
../scripts/mgnuc --grade none.gc        --       -c array.c -o array.o
tree234.c:619: error: initializer element is not constant
tree234.c:619: error: (near initialization for ‘mercury_common_1[0].f2’)
tree234.c:623: error: initializer element is not constant
tree234.c:623: error: (near initialization for ‘mercury_common_1[1].f2’)
tree234.c:631: error: initializer element is not constant
tree234.c:631: error: (near initialization for ‘mercury_common_1[3].f2’)
tree234.c:640: error: initializer element is not constant
tree234.c:640: error: (near initialization for ‘mercury_common_2[0].f1[1]’)
tree234.c:646: error: initializer element is not constant
tree234.c:646: error: (near initialization for ‘mercury_common_2[1].f1[1]’)
tree234.c:652: error: initializer element is not constant
tree234.c:652: error: (near initialization for ‘mercury_common_2[2].f1[1]’)
tree234.c:658: error: initializer element is not constant
tree234.c:658: error: (near initialization for ‘mercury_common_2[3].f1[1]’)
array.c:681: error: initializer element is not constant
array.c:681: error: (near initialization for ‘mercury_common_1[0].f1[1]’)
array.c:699: error: initializer element is not constant
array.c:699: error: (near initialization for ‘mercury_common_1[3].f1[1]’)
array.c:715: error: initializer element is not constant
array.c:715: error: (near initialization for ‘mercury_common_1[6].f1[0]’)
array.c:717: error: initializer element is not constant
array.c:717: error: (near initialization for ‘mercury_common_1[6].f1[1]’)
array.c:729: error: initializer element is not constant
array.c:729: error: (near initialization for ‘mercury_common_1[8].f1[1]’)
array.c:754: error: initializer element is not constant
array.c:754: error: (near initialization for ‘mercury_common_2[1].f2’)
array.c:758: error: initializer element is not constant
array.c:758: error: (near initialization for ‘mercury_common_2[2].f2’)
array.c:762: error: initializer element is not constant
array.c:762: error: (near initialization for ‘mercury_common_2[3].f2’)
make[2]: *** [array.o] Error 1
make[2]: *** Waiting for unfinished jobs....
make[2]: *** [tree234.o] Error 1
make[1]: *** [library] Error 2
make: *** [install] Error 2

然后我通读了自述文件,它说我应该使用另一个版本的GCC。因此,我安装了这些Command Line Tools(因为我发现它们确实包含了GCC),并再次尝试。没有运气,仍然是同样的问题。

任何帮助都将不胜感激。

EN

回答 2

Stack Overflow用户

发布于 2012-12-19 21:50:54

我是水星的OS X端口的主要维护者。在XCode 4.*中,名为gcc的可执行文件并不是真正的gcc,它实际上是llvm-gcc的符号链接。llvm-gcc有错误,不能编译水星编译器生成的C代码--我们已经检查过了,有问题的C代码是有效的C,并且(真正的) gcc和clang对此都没有问题。

如果你使用的是MacOSX10.7或10.8,我强烈推荐使用clang作为水星的C编译器。(有关详细信息,请参阅分发中的文件README.clang。)或者,你也可以安装一个真实版本的“gcc”(例如来自macports)并使用它。

票数 2
EN

Stack Overflow用户

发布于 2012-12-14 05:38:52

嗨,我也遇到了同样的问题。

我会和你保持联系的,我想我已经想通了。有趣的是,因为我做了和你完全一样的步骤。我计划安装新的gcc,并选择那个进行编译。

可能也是一个KULeuven学生:)?

--编辑:

看起来我刚刚修好了,我下载了gcc 4.3,安装好了。已将此添加到~/.profile:

本地导出路径=/usr/

/bin:$PATH

运行source ~/.profile并再次尝试make,它仍在安装中。它已经运行了4分钟,所以我猜我已经走出了困境,上一次我花了5秒才命中一个错误。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13863505

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档