1

MacでMercuryをコンパイルする際に問題が発生しました。Mac OS X 10.8を実行していて、Xcode 4.5がインストールされており、コマンドラインツールもインストールされています。

私はこれまでに何をしましたか:

tar.gzファイルをダウンロードして解凍し、./configureそのフォルダーで実行してから、make PARALLEL=-j2 installコマンドを使用しました(後で説明し./configureます)。

そのステップで、コマンドラインに次のように表示されます。

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

次に、readmeを読みましたが、他のバージョンのを使用する必要があると書かれていましたGCC。そこで、これらをインストールしてCommand Line Tools(GCCが含まれていることがわかったので)、再試行しました。運が悪い、それでも同じ問題。

どんな助けでもいただければ幸いです。

4

2 に答える 2

2

私は Mercury の OS X ポートのメインメンテナーです。XCode 4.* では、gcc という名前の実行可能ファイルは実際には gcc ではなく、実際には llvm-gcc のシンボリック リンクです。llvm-gcc にはバグがあり、Mercury コンパイラによって生成された C コードをコンパイルできません。問題の C コードは有効な C であり、(実際の) gcc と clang の両方で問題がないことを確認しました。

Mac OS X 10.7 または 10.8 を使用している場合は、Mercury の C コンパイラとして clang を使用することを強くお勧めします。(詳細については、配布物に含まれるファイル README.clang を参照してください。) あるいは、(macports などから) gcc の実際のバージョンをインストールして、それを使用することもできます。

于 2012-12-19T13:50:53.590 に答える
0

こんにちは私はまったく同じ問題を抱えています。

私はあなたに投稿し続けます、私はちょうどそれを理解したと思います。おもしろいですが、私はあなたとまったく同じ手順を実行しました。新しい gcc をインストールし、それを選択してコンパイルする予定です。

おそらくKULeuvenの学生でもあります:) ?

- 編集:

修正したばかりのようで、gcc 4.3をダウンロードしてインストールしました。これを ~/.profile に追加しました:

export PATH=/usr/local/bin:$PATH

実行source ~/.profileして再度makeを試みましたが、まだインストール中です。現在 4 分間実行されているので、森から抜け出したと推測しています。前回はエラーが発生するのに 5 秒かかりました。

于 2012-12-13T21:38:51.873 に答える