2

問題

私は自分のMacでSRIの言語モデリングツールバージョン1.6.0を構築しようとしていますが、srilmかなり奇妙なコンパイルの問題に遭遇しました(数時間のGoogle-fuが役に立たなかったという点で「奇妙な」)ので、あなたに目を向けます誰かが私がこれを修正する方法を見ているかどうかを確認します。

必要な依存関係があることをすでに確認し、インストール手順を実行し、FAQのビルドトラブルシューティングセクションを確認しました。

システム仕様

私はOSXをかなりバニラインストールしていて、いくつかのパッケージは自作でインストールされています。XCode 4.3.2(最新バージョン)がインストールされています。その他の関連するシステムの詳細は次のとおりです。

OSバージョン

Mac OS X 10.7.4

gcc -vプリントアウト

$ gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/local/libexec/gcc/x86_64-apple-darwin11.0.0/4.6.1/lto-wrapper
Target: x86_64-apple-darwin11.0.0
Configured with: ../gcc-4.6.1/configure --enable-languages=fortran,c++
Thread model: posix
gcc version 4.6.1 (GCC)

g++ -vプリントアウト

$ gcc -v
Using built-in specs.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=/usr/local/libexec/gcc/x86_64-apple-darwin11.0.0/4.6.1/lto-wrapper
Target: x86_64-apple-darwin11.0.0
Configured with: ../gcc-4.6.1/configure --enable-languages=fortran,c++
Thread model: posix
gcc version 4.6.1 (GCC) 

uname -aプリントアウト

$ uname -a
Darwin MacBook-Air.local 11.4.0 Darwin Kernel Version 11.4.0: Mon Apr  9 19:32:15 PDT 2012; root:xnu-1699.26.8~1/RELEASE_X86_64 x86_64

エラー自体

make World以下は、srlimトップレベルディレクトリから実行して生成された出力の終わりです。この時点までのすべては、次のいずれかの状況で正常にコンパイルされます。

  • 私は一人で走りmake Worldます。
  • 走るmake World MACHINE_TYPE=macosx
  • 私は実行しますmake World MACHINE_TYPE=macosx-m64(64ビットプロセッサ用の特定のmakefile)
  • 私は実行しますmake World MACHINE_TYPE=macosx-m32(32ビットプロセッサ用の特定のmakefile)

また、ポップアップするエラーは常に同じです(以下を参照)。

stderrプリントアウト

$ make World

(...) # a bunch of stuff compiles with no errors or warnings

c++ -Wreturn-type -Wimplicit -DINSTANTIATE_TEMPLATES -DHAVE_ZOPEN  -I/usr/include -I. -I../../include -DHAVE_ZOPEN   -c -g -O2 -fno-common -o ../obj/macosx/LatticeIndex.o LatticeIndex.cc
LatticeIndex.cc:78:6: error: variable length array of non-POD element type
      'NBestWordInfo'
            makeArray(NBestWordInfo, roundedNgram, len + 1);
            ^
../../include/Array.h:93:33: note: expanded from macro 'makeArray'
# define makeArray(T, A, n)             T A[n]
                                           ^
LatticeIndex.cc:126:4: warning: data argument not used by format string
      [-Wformat-extra-args]
                        (float)ngram[0].start);
                        ^
LatticeIndex.cc:128:4: warning: data argument not used by format string
      [-Wformat-extra-args]
                        (float)(ngram[len-1].start + ngram[len-1].duration));
                        ^
2 warnings and 1 error generated.
make[2]: *** [../obj/macosx/LatticeIndex.o] Error 1
make[1]: *** [release-libraries] Error 1
make: *** [World] Error 2

何がうまくいかない可能性があるか考えていますか?私の部署の他の人のMacでも正常にコンパイルされているようで、makefileの違いを確認しましたが、何も表示されませんでした。ビルドが失敗する理由はここでは誰にもわかりませんが、ご協力いただければ幸いです。あなたが私に提供することができるどんな助けにも前もって感謝します!:-)

4

1 に答える 1

0

この問題は、Appleが可変長配列をサポートしていないllvm-gcc/clangを使用していることが原因です。この問題は、$ SRILM / dstruct / src / Array.hを変更することで実際に対処でき、次のリリースで指摘および対処されていますsrilm

当面は、Macで、srilm代わりにg ++ 4.2を使用して、次のコマンドを使用してビルドします。

$ make MACHINE_TYPE=macosx-m64 CXX=g++-4.2 World

srilmこれは私のすべてのMacで問題なくビルドされます。

于 2012-05-16T12:55:59.820 に答える