首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用llvm-gcc 4.x安装srilm 1.6.0时的问题

使用llvm-gcc 4.x安装srilm 1.6.0时的问题
EN

Stack Overflow用户
提问于 2012-05-15 18:49:08
回答 1查看 904关注 0票数 2

问题所在

我正试图在我的mac上构建SRI语言建模工具srilm版本1.6.0,并遇到一些相当奇怪的编译问题(“奇怪”,因为几个小时的Google-fu没有帮助),所以我转向您,看看是否有人能看到我如何解决这个问题。

我已经有了检查我是否有所需的依赖项,并按照安装说明执行,也通过了常见问题的生成疑难解答部分

系统规格

我有一个相当普通的OS安装,一些软件包安装通过自制。安装了XCode 4.3.2 (最新版本)。以下是其他相关的系统细节。

OS版本

Mac 10.7.4

gcc -v打印输出

代码语言:javascript
复制
$ 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打印输出

代码语言:javascript
复制
$ 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打印输出

代码语言:javascript
复制
$ 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

错误本身

下面是从srlim顶级目录运行make World生成的输出的结尾。在以下任何情况下,这一点之前的所有内容都可以编译:

  • 我自己运行make World
  • 我运行make World MACHINE_TYPE=macosx
  • 我运行make World MACHINE_TYPE=macosx-m64 (64位处理器的特定makefile )
  • 我运行make World MACHINE_TYPE=macosx-m32 (32位处理器的特定makefile )

弹出的错误总是相同的(如下所示)。

stderr打印输出

代码语言:javascript
复制
$ 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

知道会出什么问题吗?它似乎可以很好地编译在我的部门的其他人的macs,我已经检查了他们的制造文件的差异,但什么也没有出现。这里没有人知道为什么构建失败,但如果您能帮助我们,我们将非常感激。谢谢你能为我提供任何帮助!:-)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-16 12:55:59

这个问题是由于苹果使用llvm gcc/clang,它不支持可变长度数组。这个问题实际上可以通过修改$SRILM/dstruct/src/Array.h来解决,并且已经在即将发布的srilm中得到了注意和解决。

目前,在mac上使用srilm 4.2构建g++,使用以下命令:

代码语言:javascript
复制
$ make MACHINE_TYPE=macosx-m64 CXX=g++-4.2 World

这在我所有的macs上都没有问题地构建了srilm

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

https://stackoverflow.com/questions/10606983

复制
相关文章

相似问题

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