使用 llvm-gcc 4.x 安装 srilm 1.6.0 时出现问题
Problems installing srilm 1.6.0 with llvm-gcc 4.x
问题
我正在尝试在我的Mac上构建SRI的语言建模工具,srilm
版本1.6.0,并遇到了一些相当奇怪的编译问题("奇怪",因为几个小时的Google-fu没有帮助(,所以我转向你,看看是否有人看到我如何解决这个问题。
我已经检查了我是否具有所需的依赖项,并按照安装说明进行操作,并完成了常见问题解答的构建故障排除部分。
系统规格
我有一个非常普通的OS X安装,一些软件包是通过自制软件安装的。安装了 XCode 4.3.2(最新版本(。以下是其他相关系统详细信息。
操作系统版本
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
错误本身
以下是从 srlim 顶级目录运行make World
生成的输出的结尾。在以下任何一种情况下,到目前为止的所有内容都可以正常编译:
- 我自己运行
make World
。 - 我跑
make World MACHINE_TYPE=macosx
- 我运行
make World MACHINE_TYPE=macosx-m64
(64位处理器的特定生成文件( - 我运行
make World MACHINE_TYPE=macosx-m32
(32位处理器的特定生成文件(
并且弹出的错误始终相同(如下所示(。
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 是否存在差异,但没有弹出任何内容。这里没有人知道为什么构建失败,但如果您能帮助我们,我们将不胜感激。提前感谢您为我提供的任何帮助!:-)
这个问题是由于Apple使用了llvm-gcc/clang,它不支持可变长度数组。这个问题实际上可以通过修改$SRILM/dstruct/src/Array.h来解决,并且在即将发布的srilm
版本中已经注意到并解决了。
目前,在 Mac 上,使用 g++ 4.2 构建srilm
,使用以下命令:
$ make MACHINE_TYPE=macosx-m64 CXX=g++-4.2 World
这在我的所有Mac上构建srilm
没有问题。
相关文章:
- gcc和clang在表达式是否为常量求值的问题上存在分歧
- GCC 问题与 static_cast<std::u16string>
- 编译 llvm 插件时出现问题:llvm/Config/llvm-config.h:没有这样的文件或目录
- 构建LLVM 10 C++工具链的问题
- 具有sleep_for和sleep_until功能的 gcc 可能存在的问题
- 调试模板时出现问题.专门针对 Linux GCC 7、GCC 6、GCC 5、GCC 4.9 错误构建失败:模板参数 1
- LLVM 万花筒教程 JIT 编译问题
- 使用具有默认参数的函数模板进行 decltype 会使结果混乱(一个有趣的问题或 gcc 的错误)
- 没有'str'成员在 GCC 和 Clang 'std::basic_ostream<char>',但 MSVC 没有问题
- 与lambda一起使用虚拟继承在初始化列表中捕获此问题的GCC错误
- 使用 llvm-gcc 4.x 安装 srilm 1.6.0 时出现问题
- 运行时设置OMP_THREAD_LIMIT的问题(c ++ gcc 4.4.7)
- 在OpenCV-DisplayImage.cpp中编译c++代码时出现问题(使用gcc和CMake)
- c++模板在GCC中工作正常,但在LLVM-GCC编译器中显示编译时错误
- .h文件中的全局常量,将问题与gcc联系起来,适用于g++
- 提升async_read_until自定义匹配功能的问题在 GCC 中不符合
- c++ stl映射编译问题与GCC/代码块
- 这段代码有什么问题,gcc不会将其转换为.exe
- OS X 选择 llvm gcc 编译器
- c++标准库在.mm文件中找到,但在.h文件中找不到(Xcode 4.5 LLVM GCC 4.2)