实验室换了新机器,重新安装了最新的ubuntu8.10,这样不得不重新搭建moses测试平台。拿自己写的<<Moses相关介绍>>作参考,感觉写得不够细,这里把安装的全过程记录下来,属于一个step-by-step的过程,希望对大家有用。

一、在用户52nlp目录下建立moses平台主目录mtworkdir:
  52nlp@52nlp-desktop:~$ mkdir mtworkdir
  52nlp@52nlp-desktop:~$ cd mtworkdir/

二、安装语言模型工具SRILM:
1、建立srilm目录:
  52nlp@52nlp-desktop:~/mtworkdir$ mkdir srilm
  52nlp@52nlp-desktop:~/mtworkdir$ cd srilm/
2.下载最新的的srilm包(目前最新版本为 srilm-1.5.7.tar.gz)
  52nlp@52nlp-desktop:~/mtworkdir/srilm$ wget   'ftp://ftp.speech.sri.com/pub/people/stolcke/srilm/srilm-1.5.7.tar.gz'
  显示信息如下:
=> `srilm-1.5.7.tar.gz'
正在解析主机 ftp.speech.sri.com... 130.107.33.205
正在连接 ftp.speech.sri.com|130.107.33.205|:21... 已连接。
正在以 anonymous 登录 ... 登录成功!
==> SYST ... 完成。 ==> PWD ... 完成。
==> TYPE I ... 完成。 ==> CWD /pub/people/stolcke/srilm ... 完成。
==> SIZE srilm-1.5.7.tar.gz ... 完成。
==> PASV ... 完成。 ==> RETR srilm-1.5.7.tar.gz ... 完成。
长度:48526656 (46M) (非正式数据)
出现下载进度条,等待约一段时间之后,下载完毕
3.解压:tar -zxvf srilm-1.5.7.tar.gz
4.首先确认srilm依赖的这些工具是否已安装:
 A template-capable ANSI-C/C++ compiler, preferably gcc version 3.4.3 or higher.
 GNU make, to control compilation and installation.
 GNU gawk, required for many of the utility scripts.
 GNU gzip to unpack the distribution, and to allow SRILM programs to handle “.Z” and “.gz” compressed datafiles (highly recommended).
 bzip2 to handle “.bz2″ compressed files (optional).
 p7zip to handle “7-zip” compressed files (optional).
 The Tcl embeddable scripting language library (only required for some of the test executables).
 除了上面这些工具外,还需要装一个csh。Ubuntu8.10自带的软件不多,安装时用apt-get或新利得都行。
5. 修改MakeFile:
 在以上工具都安装完毕后,首先修改srilm/MakeFile:
   cp Makefile Makefile.bak(备份)
   vi Makefile
 修改或在第7行下面加上一行
 # SRILM = /home/speech/stolcke/project/srilm/devel (原)
 SRILM = $(PWD) (修改)
 再修改srilm/common/Makefile.machine.i686:
  cd common/
  cp Makefile.machine.i686 Makefile.machine.i686.bak
  vi Makefile.machine.i686
 将第15行 # Use the GNU C compiler下的三行修改如下:
  GCC_FLAGS = -mtune=pentium3 -Wreturn-type -Wimplicit
  CC = gcc $(GCC_FLAGS)
  CXX = g++ $(GCC_FLAGS) -DINSTANTIATE_TEMPLATES
 注:我的新机器的cpu是intel64位,所以尝试了一下64位的编译方法,不太成功,这里的方法对于64位机器也是可以的。
 将51行 # Tcl support (standard in Linux) 下的两行修改如下:
  TCL_INCLUDE = -I/usr/include/tcl8.5
  TCL_LIBRARY = -L/usr/lib/tcl8.5
 注:我装的是tcl8.5,如果是其他版本,请相应修改。
6.回到srilm目录下编译:
  cd ..
  make World
 顺利的话,srilm就编译通过了。如果出现问题,很可能就是相应的依赖工具没有装完全,请回到第4步检查。
7.进入srilm/test目录下进行测试:
 编译通过不等于编译成功,必须利用srilm提供的测试模块进行测试
 首先声明srilm编译成功后工具报所在的环境变量:
  export  PATH=$PATH:/home/52nlp/mtworkdir/srilm/bin/i686:
/home/52nlp/mtworkdir/srilm/bin
 然后进入test测试:
  cd test
  make all
 出现如下信息:
*** Running test class-ngram-simple ***
0.50user 0.11system 0:00.61elapsed 100%CPU  (0avgtext+0avgdata 0maxresident)k
0inputs+1288outputs (0major+4684minor)pagefaults 0swaps
class-ngram-simple: stdout output IDENTICAL.
class-ngram-simple: stderr output IDENTICAL.
....
 需要等待一段时间,如果出现多是IDENTICAL,很少的DIFFERS,就证明srilm编译成功了!

三、安装翻译模型训练工具Giza++,mkcls

1、 在mtworkdir目录下下载并解压Giza++:
  cd /home/52nlp/mtworkdir
  wget http://ling.umd.edu/~redpony/software/giza++.gcc41.tar.gz
  tar -zxvf giza++.gcc41.tar.gz
 解压后得到GIZA++-v2/目录
2、编译Giza++:
  cd GIZA++v2
  make
 以前这一步都比较顺利,没想到这一次出了问题:编译过程中提示stream.h文件无法找到,开始以为自己的编译环境没有配置完全,但是检查了几项必要的都安装了。在Google上搜这个问题,国内好像还没有人遇到过,最终在Google code giza-pp的issue上找到了的答案(http://code.google.com/p/giza-pp/issues/detail?id=7):
  Cannot compile with gcc 4.3 or greater
 Giza++不能被gcc,g++4.3或更高版本编译。这个问题也是最近被发现的,属于一个bug,而ubutu8.10默认安装的gcc,g++都是4.3版本,这个帖子里提出了几种解决方案,我用了最简单的一种:
 安装g++-4.1: sudo apt-get install g++-4.1
 修改GIZA++-v2里的Makefile:vi Makefile
 将第5行CXX=g++
 替换为:CXX=g++-4.1
 OK, 可以重新make了:
  make
  make snt2cooc.out
 一切顺利!
3、下载解压并编译mkcls:
  cd ..(重新进入mtworkdir目录)
  wget http://ling.umd.edu/~redpony/software/mkcls.gcc41.tar.gz
  tar -zxvf mkcls.gcc41.tar.gz
  cd mkcls-v2
  make
 这一步一般没啥问题。
4、建立bin目录,并将giza++,mkcls工具拷贝到bin目录下:
  cd ..
  mkdir -p bin
  cp GIZA++-v2/GIZA++ bin/
  cp GIZA++-v2/snt2cooc.out bin/
  cp mkcls-v2/mkcls bin/

四、安装解码器Moses及相关脚本
1、建立目录,通过svn下载moses:
  mkdir -p moses
  svn co  https://mosesdecoder.svn.sourceforge.net/svnroot/mosesdecoder
/trunk moses
 ubuntu8.10下需自行安装svn.
2、下载完成后编译:
  cd moses
  ./regenerate-makefiles.sh
  ./configure --with-srilm=/home/52nlp/mtworkdir/srilm
  make -j 4
  cd ..
 注:srilm指向绝对路径。
3、安装Moses训练脚本
 建立训练脚本目录:
  mkdir -p bin/moses-scripts
  修改makefile:
  vi moses/scripts/Makefile
  将第13、14行修改如下:
  TARGETDIR=/home/52nlp/mtworkdir/bin/moses-scripts
  BINDIR=/home/52nlp/mtworkdir/bin
 编译:
  cd moses/scripts/
  make release
  cd ../..
 使用时需要声明环境:
  export SCRIPTS_ROOTDIR=/home/52nlp/mtworkdir/bin/moses-scripts
/scripts-20090113-1019
4、安装Moses附加脚本及评测工具
 下载scripts.tgz并解压:
  wget http://www.statmt.org/wmt07/scripts.tgz
  tar -zxvf scripts.tgz
 这些脚本包括:
  Tokenizer scripts/tokenizer.perl
  Lowercaser scripts/lowercase.perl
  SGML-Wrapper scripts/wrap-xml.perl
 下载NIST,BLEU评测工具:
  wget ftp://jaguar.ncsl.nist.gov/mt/resources/mteval-v11b.pl

  完整的安装过程结束,这次安装中最大的问题是Giza++不能被gcc,g++4.3或更高版本编译,以后肯定会有很多人遇到这个问题,希望放在这里对大家有所帮助。

注:原创文章,转载请注明出处“我爱自然语言处理”:www.52nlp.cn

本文链接地址:
https://www.52nlp.cn/ubuntu-moses-platform-build-process-record/

作者 52nlp

《Ubuntu8.10下moses测试平台搭建全记录》有157条评论
  1. 文章对我的帮助很大啊。不知道这位师兄是工大那个实验室的?希望以后能和师兄交流一下。

    [回复]

    admin 回复:

    呵呵,已经离开HIT快3年了!可以邮件交流!谢谢你的评论,第一个,终于等来了!

    [回复]

  2. 前辈您好,我现在在学习自然语言处理,但是我在ununtu下配置摩西的时候总是在安装语言模型工具SRILM这不不能通过,在测试的时候都是DIFFERS.想求助您一下,如果方便能麻烦您个给我一个回复么?谢谢

    [回复]

  3. /home/hans/mtworkdir/srilm/lm/src/Vocab.h:184: undefined reference to `LHash::find(unsigned int, bool&) const'
    ../../lib/i686/liboolm.a(Discount.o): In function `NgramCountsIter':
    /home/hans/mtworkdir/srilm/lm/src/NgramStats.h:137: undefined reference to `TrieIter2::TrieIter2(Trie const&, unsigned int*, unsigned int, int (*)(unsigned int, unsigned int))'
    ...
    这些是错误信息

    [回复]

    admin 回复:

    我还没遇到过这样的问题,在Google上搜了一下,你看看这个解答:
    make sure the c++ compiler is invoked with
    -DINSTANTIATE_TEMPLATES

    If it is then there seems to be a strange problem with your linker or
    compiler installation that I cannot reproduce.

    http://www.speech.sri.com/projects/srilm/mail-archive/srilm-user/2006-October/11.html

    另外再检查一下srilm所依赖的几个工具在ubuntu上是否已经安装,这里对于后面安装是否成功影响比较大。

    [回复]

  4. 前辈您好,我在windows下配置和运行moses时遇到了两个问题,想跟您请教和交流下。
    一个是用moses网站上提供的A Simple Translation Model在命令行窗口中运行moses可以通过。但是换成自己的短语表就不行了,我对比发现简单翻译模型示例中的每一行最后的概率值是一个,而我的短语表中每一行最后的概率值是四个;
    另一个是想摆脱命令行窗口中运行的限制,在vs2005IDE下项目->属性->
    配置属性->调试中将本来在命令行参数窗口中可以运行通过的命令输入进去,在IDE中却运行不了了。不知道怎么回事,向您求助,谢谢!

    [回复]

    admin 回复:

    你好,关于第一个问题,如果是正常训练的翻译模型,一般都是5个概率值,不知道你的短语翻译模型是怎么得到的?
    要是4个值的话,需要修改一下配置文件moses.ini:
    1、将[ttable-file]下的“0 0 1 phrase-table”修改为“0 0 4 phrase-table”;
    2、将[weight-t]下的”1“修改为4行,每行分配值为”0.25“;
    估计这样就能通过了。
    第二个问题我还不熟,不好意思。

    [回复]

  5. 相见恨晚,是我对这个站点的感觉。谢谢你所做的工作,使我以及更多的人在其中受益匪浅。我把老哥站点里的关于机器翻译的看完了,很好,既有细节深度,又有综述的广度。加油!!!

    [回复]

    admin 回复:

    谢谢你的支持!欢迎常来看看!

    [回复]

  6. 很有收获,

    请教关于giza的使用问题。

    下载giza,用g++4.1编译,然后make , 没有出什么问题。

    我在运行giza的时候,比如:./GIZA++ --v等一下子就报错:

    *** stack smashing detected ***: ./GIZA++ terminated
    ======= Backtrace: =========
    [0x81762ae]
    [0x8176262]
    [0x8069de1]
    [0x806af04]
    [0x8072aaa]
    [0x8146031]
    [0x8048151]
    ======= Memory map: ========
    08048000-081f6000 r-xp 00000000 07:00 411484 /home/administrator/桌面/giza-pp/GIZA++-v2/GIZA++
    081f6000-081f8000 rw-p 001ae000 07:00 411484 /home/administrator/桌面/giza-pp/GIZA++-v2/GIZA++
    081f8000-081ff000 rw-p 081f8000 00:00 0
    0919c000-09210000 rw-p 0919c000 00:00 0 [heap]
    b8071000-b8072000 r-xp b8071000 00:00 0 [vdso]
    bfa5d000-bfa72000 rw-p bffeb000 00:00 0 [stack]

    请问这是什么问题,麻烦指点一下,不甚感谢。

    [回复]

  7. 你好,这个问题似乎与http://code.google.com/p/giza-pp/issues/detail?id=11#c0上的这个问题很象,不过它开始的错误是:*** buffer overflow detected ***: ../giza-pp/GIZA++-v2/GIZA++ terminated。
    不知道你的操作系统环境是什么,建议除了使用g++4.1编译外,最好安装gcc4.1这个版本再编译试试,原因如下:
    The error is caused by the lines:
    char time_stmp[17];
    sprintf(time_stmp, "%02d-%02d-%02d.%02d%02d%02d.", local->tm_year,
    (local->tm_mon + 1), local->tm_mday, local->tm_hour,
    local->tm_min, local->tm_sec);
    Probably by installing older GCC, you got older version of C library, which does not perform such check.
    另外,虽然目前Google code上有最新的giza-pp-v1.0.3.tar.gz可以下载,并且编译时没有任何问题,但是如果使用g++4.3及以上版本编译,运行时仍会出现上面这类问题,解决的办法还是这篇文章中提到的方法:
    安装g++-4.1: sudo apt-get install g++-4.1
     修改GIZA++-v2里的Makefile:vi Makefile
     将第5行CXX=g++
     替换为:CXX=g++-4.1
    这样使用时才不会出现上面这类问题。

    [回复]

  8. 您好,我现在已经在linux下将moses编译好,而且也能运行了,但我想把自己的语言模型和调序模型加进Moses里,那我需要去改Moses里面的代码吗?还是只是把moses里面的配置文件moses.ini修改一下?请麻烦指点一下,谢谢!

    [回复]

    admin 回复:

    这个应该是修改配置文件,不用修改moses的代码

    [回复]

  9. 您好:
    还有一个问题向您请教,就是我的语言模型并不是基于n-gram的,跟n-gram有些区别,是解决长距离依赖的!调序模型也是跟moses本身生成的调序模型有区别,那moses可以应用这两种模型去解码吗?moses具体解码时对所用到的语言模型和调序模型没有什么要求吗?尤其是算法不同时!这种情况也只是修改配置文件吗?不用去修改它里面的代码吗?真的还得麻烦您指点一下,谢谢!

    [回复]

    admin 回复:

    这种情况可能要修改代码了,如果用的模型与moses默认的有区别,可以考虑在对数线性模型下以特征函数的方式加入,moses 的manual里第5.4节专门讲了如何在moses里加入特征函数的方式:Adding Feature Functions。你可以看看,这个要修改代码了。

    [回复]

  10. 您好。想请教您一个问题,刘群老师有一篇EMNLP的文章“Maximum Entropy based Rule Selection Model for Syntax-based Statistical Machine Translation”,他也是用log-linear模型实现的,我现在想问的是,如果把他的研究结果作为一个特征放到moses里是否可行,如果可行的话,是不是就用moses的manual.pdf中介绍的一个“Add feature”就可以了?还是要修改训练过程,重新训练?或者把这个feature作为moses现有的reordering特征的一个子类呢?
    或者您还有更好的方案?
    希望得到您的回复,基础不好,现在研究的有点晕了:)

    [回复]

    admin 回复:

    你好,我看了一下这篇文章的摘要,觉得这篇文章的目标是Syntax-based Statistical Machine Translation,刘老师他们用的是树到串的对齐模板模型,Moses是传统的基于短语的统计机器翻译系统,和这篇文章的对象不同,所有我觉得把他的研究成果作为一个特征放到Moses里似乎不太合适。
    不过你可以看看刘老师的学生熊德意在06年COLING-ACL联合会议上发表的这篇文章:Maximum Entropy Based Phrase Reordering Model for Statistical Machine Translation,如果你能实现这篇文章里提到的基于最大熵方法得到的reorder模型,就可以尝试按Moses的manual.pdf中介绍的“Add feature”的方法加人特征了,不过这个reorder模型似乎和Moses现有的reorder模型不同,你可以仔细研究一下。

    [回复]

  11. 您好,谢谢回复。请问是否方便给我发个邮件呢?有问题,还要向您请教呢。

    [回复]

  12. 你好,我运行./regenerate-makefiles.sh这一步后,显示的是
    Calling...
    Calling...
    Calling...

    You should now be able to configure and build:

    ./configure --with-srilm=/path/to/srilm

    make -j 4

    Calling 后面没有您那么多的输出,直接是...,这是不是表示没有成功?
    另外,MOSES的版本不同情况下,./rengenerate-makefiles.sh 并不是都能运行,我刚开始用最新版本2009-4-13,出现的问题是运行许可被拒绝,其他除了08-7-11版本外的,我也试了,也同样出现不能运行./rengenerate-makefiles.sh,是不是我的MOSES包有问题,非常期待您的回复~~~!!

    [回复]

    52nlp 回复:

    好久没有碰moses,都有点忘了。晚上我在ubuntu9.04里重新安装了一下,运行./regenerate-makefiles.sh后应该显示的是:
    Calling /usr/bin/aclocal...
    Calling /usr/bin/autoconf...
    Calling /usr/bin/automake...
    如果没有显示,估计是automake和autoconf没有安装的缘故。
    ./rengenerate-makefiles.sh 被拒绝的缘故,肯定和moses没有关系,我今晚装的就是4.13版本的。你可以在运行脚本之前将其设置为可执行试一下:
    chmod 755 rengenerate-makefiles.sh

    [回复]

  13. 您好,呵呵,感谢您的指导,确实是因为没有装automake,现在已经可以运行了,但是有出现了新的问题,希望继续可以得到您的指导,感谢!
    在运行到make -j4,的时候出现的错误,两处都是这样的问题,如下:
    提示编译错误
    In file included from /usr/include/c++/4.4/cstdlib:68,
    from Util.h:34,
    from AlignmentElement.h:26,
    from AlignmentPhrase.h:25,
    from AlignmentPhrase.cpp:21:
    /usr/include/stdlib.h:351: error: expected ‘;’ before ‘*’ token
    /usr/include/stdlib.h:352: error: expected ‘;’ before ‘*’ token
    /usr/include/stdlib.h:353: error: expected ‘;’ before ‘*’ token
    /usr/include/stdlib.h:357: error: expected ‘;’ before ‘*’ token
    /usr/include/stdlib.h:361: error: ‘int32_t’ has not been declared
    stdlib.h是系统的只读文件,不可以修改,期待您的再次指导

    [回复]

    52nlp 回复:

    不用客气,也不要称您了,呵呵!
    这个问题我没有遇到过,不过查了一下,发现有人似乎遇到了和你相同的问题,你可以看看这个网页:
    http://www.mail-archive.com/moses-support@mit.edu/msg01482.html
    下面这个是解答:
    http://www.mail-archive.com/moses-support@mit.edu/msg01483.html
    我这边直接访问不了,是通过快照看的,建议的解决方案如下:
    to compile moses in gcc 4.4, you have to compile with the switch
    -std=c++0x
    i've tested it on my fedora 11 and it works.

    Since moses uses automake, you should add this flag to the 3 Makefile.am
    files in
    moses/src
    moses-cmd/src
    misc
    eg.
    AM_CPPFLAGS=..... -std=c++0x
    如果不行的话,可以试着装一个低版本的gcc再试试。

    [回复]

  14. 你好,呵呵,不说您了,前两天机子出了点问题,重新安装了,按照你说的方法加了-std=c++0x,是可以编译了,但是又出现了新的问题,我本来想安装低版本的gcc试试看可以解决不,但是发现安装gcc4.2运行到./configure --with-srilm=/home/crisy/mtp/srilm的时候,提示找不到G++
    所以还是重新安装成GCC4.4了,下面是在4.4时运行两遍后提示的错误:
    make all-recursive
    make[1]: 正在进入目录 `/home/crisy/mtp/trunk'
    Making all in moses/src
    make[2]: 正在进入目录 `/home/crisy/mtp/trunk/moses/src'
    make all-am
    make[3]: 正在进入目录 `/home/crisy/mtp/trunk/moses/src'
    make[3]: 没有什么可以做的为 `all-am'。
    make[3]:正在离开目录 `/home/crisy/mtp/trunk/moses/src'
    make[2]:正在离开目录 `/home/crisy/mtp/trunk/moses/src'
    Making all in moses-cmd/src
    make[2]: 正在进入目录 `/home/crisy/mtp/trunk/moses-cmd/src'
    g++ -g -O2 -L/home/crisy/mtp/srilm/lib/i686 -o moses Main.o mbr.o IOWrapper.o TranslationAnalysis.o -L../../moses/src -lmoses -loolm -ldstruct -lmisc -lz
    /usr/bin/ld: cannot find -loolm
    collect2: ld returned 1 exit status
    make[2]: *** [moses] 错误 1
    make[2]:正在离开目录 `/home/crisy/mtp/trunk/moses-cmd/src'
    make[1]: *** [all-recursive] 错误 1
    make[1]:正在离开目录 `/home/crisy/mtp/trunk'
    make: *** [all] 错误 2
    希望可以得到回复,感谢~~!

    [回复]

    52nlp 回复:

    我搜了一下,不知道你的机器是不是64位的,下面这个情况和你的是相似的:http://www.mail-archive.com/moses-support@mit.edu/msg01214.html
    解决方法在:http://www.mail-archive.com/moses-support@mit.edu/msg01215.html
    似乎是通过修改moses的'configure'文件,将下面这一行(4291行):
    # MY_ARCH=`${with_srilm}/sbin/machine-type`
    替换为:
    MY_ARCH="i686-m64"

    另外一个也很相似:http://www.mail-archive.com/moses-support@mit.edu/msg00117.html
    不过提供的建议是“it looks to me like you've not properly specified the path to the SRILM”
    我估计前一个解决方法可能管用,可以试试看。

    [回复]

  15. 非常感谢,问题已经解决,搭建成功了,终于可以进一步做研究了,呵呵,这个论坛真好,我会常来看看,学学,有很多我研究需要搞清楚的概念和问题,谢谢你的帮忙~!

    [回复]

    52nlp 回复:

    不客气,欢迎常来看看!

    [回复]

  16. 请教下,我的CPU是T8100,应该支持64位,但是使用的是UBUNTU 32位系统,GCC是4.4版,按照你的说法,SRILM始终编译不过去,提示内容如下:
    mkdir include lib bin
    mkdir: 无法创建目录 “include”: 文件已经存在
    mkdir: 无法创建目录 “lib”: 文件已经存在
    mkdir: 无法创建目录 “bin”: 文件已经存在
    make: [dirs] 错误 1 (忽略)
    make init
    make[1]: 正在进入目录 `/home/lixiang/mtworkdir/srilm'
    for subdir in misc dstruct lm flm lattice utils; do \
    (cd $subdir/src; make SRILM=/home/lixiang/mtworkdir/srilm MACHINE_TYPE=i686 OPTION= MAKE_PIC= init) || exit 1; \
    done
    make[2]: 正在进入目录 `/home/lixiang/mtworkdir/srilm/misc/src'
    cd ..; /home/lixiang/mtworkdir/srilm/sbin/make-standard-directories
    make ../obj/i686/STAMP ../bin/i686/STAMP
    make[3]: 正在进入目录 `/home/lixiang/mtworkdir/srilm/misc/src'
    make[3]: “../obj/i686/STAMP”是最新的。
    make[3]: “../bin/i686/STAMP”是最新的。
    make[3]:正在离开目录 `/home/lixiang/mtworkdir/srilm/misc/src'
    make[2]:正在离开目录 `/home/lixiang/mtworkdir/srilm/misc/src'
    make[2]: 正在进入目录 `/home/lixiang/mtworkdir/srilm/dstruct/src'
    cd ..; /home/lixiang/mtworkdir/srilm/sbin/make-standard-directories
    make ../obj/i686/STAMP ../bin/i686/STAMP
    make[3]: 正在进入目录 `/home/lixiang/mtworkdir/srilm/dstruct/src'
    make[3]: “../obj/i686/STAMP”是最新的。
    make[3]: “../bin/i686/STAMP”是最新的。
    make[3]:正在离开目录 `/home/lixiang/mtworkdir/srilm/dstruct/src'
    make[2]:正在离开目录 `/home/lixiang/mtworkdir/srilm/dstruct/src'
    make[2]: 正在进入目录 `/home/lixiang/mtworkdir/srilm/lm/src'
    cd ..; /home/lixiang/mtworkdir/srilm/sbin/make-standard-directories
    make ../obj/i686/STAMP ../bin/i686/STAMP
    make[3]: 正在进入目录 `/home/lixiang/mtworkdir/srilm/lm/src'
    make[3]: “../obj/i686/STAMP”是最新的。
    make[3]: “../bin/i686/STAMP”是最新的。
    make[3]:正在离开目录 `/home/lixiang/mtworkdir/srilm/lm/src'
    make[2]:正在离开目录 `/home/lixiang/mtworkdir/srilm/lm/src'
    make[2]: 正在进入目录 `/home/lixiang/mtworkdir/srilm/flm/src'
    cd ..; /home/lixiang/mtworkdir/srilm/sbin/make-standard-directories
    make ../obj/i686/STAMP ../bin/i686/STAMP
    make[3]: 正在进入目录 `/home/lixiang/mtworkdir/srilm/flm/src'
    make[3]: “../obj/i686/STAMP”是最新的。
    make[3]: “../bin/i686/STAMP”是最新的。
    make[3]:正在离开目录 `/home/lixiang/mtworkdir/srilm/flm/src'
    make[2]:正在离开目录 `/home/lixiang/mtworkdir/srilm/flm/src'
    make[2]: 正在进入目录 `/home/lixiang/mtworkdir/srilm/lattice/src'
    cd ..; /home/lixiang/mtworkdir/srilm/sbin/make-standard-directories
    make ../obj/i686/STAMP ../bin/i686/STAMP
    make[3]: 正在进入目录 `/home/lixiang/mtworkdir/srilm/lattice/src'
    make[3]: “../obj/i686/STAMP”是最新的。
    make[3]: “../bin/i686/STAMP”是最新的。
    make[3]:正在离开目录 `/home/lixiang/mtworkdir/srilm/lattice/src'
    make[2]:正在离开目录 `/home/lixiang/mtworkdir/srilm/lattice/src'
    make[2]: 正在进入目录 `/home/lixiang/mtworkdir/srilm/utils/src'
    cd ..; /home/lixiang/mtworkdir/srilm/sbin/make-standard-directories
    make ../obj/i686/STAMP ../bin/i686/STAMP
    make[3]: 正在进入目录 `/home/lixiang/mtworkdir/srilm/utils/src'
    make[3]: “../obj/i686/STAMP”是最新的。
    make[3]: “../bin/i686/STAMP”是最新的。
    make[3]:正在离开目录 `/home/lixiang/mtworkdir/srilm/utils/src'
    make[2]:正在离开目录 `/home/lixiang/mtworkdir/srilm/utils/src'
    make[1]:正在离开目录 `/home/lixiang/mtworkdir/srilm'
    make release-headers
    make[1]: 正在进入目录 `/home/lixiang/mtworkdir/srilm'
    for subdir in misc dstruct lm flm lattice utils; do \
    (cd $subdir/src; make SRILM=/home/lixiang/mtworkdir/srilm MACHINE_TYPE=i686 OPTION= MAKE_PIC= release-headers) || exit 1; \
    done
    make[2]: 正在进入目录 `/home/lixiang/mtworkdir/srilm/misc/src'
    make[2]: 没有什么可以做的为 `release-headers'。
    make[2]:正在离开目录 `/home/lixiang/mtworkdir/srilm/misc/src'
    make[2]: 正在进入目录 `/home/lixiang/mtworkdir/srilm/dstruct/src'
    make[2]: 没有什么可以做的为 `release-headers'。
    make[2]:正在离开目录 `/home/lixiang/mtworkdir/srilm/dstruct/src'
    make[2]: 正在进入目录 `/home/lixiang/mtworkdir/srilm/lm/src'
    make[2]: 没有什么可以做的为 `release-headers'。
    make[2]:正在离开目录 `/home/lixiang/mtworkdir/srilm/lm/src'
    make[2]: 正在进入目录 `/home/lixiang/mtworkdir/srilm/flm/src'
    make[2]: 没有什么可以做的为 `release-headers'。
    make[2]:正在离开目录 `/home/lixiang/mtworkdir/srilm/flm/src'
    make[2]: 正在进入目录 `/home/lixiang/mtworkdir/srilm/lattice/src'
    make[2]: 没有什么可以做的为 `release-headers'。
    make[2]:正在离开目录 `/home/lixiang/mtworkdir/srilm/lattice/src'
    make[2]: 正在进入目录 `/home/lixiang/mtworkdir/srilm/utils/src'
    make[2]: 没有什么可以做的为 `release-headers'。
    make[2]:正在离开目录 `/home/lixiang/mtworkdir/srilm/utils/src'
    make[1]:正在离开目录 `/home/lixiang/mtworkdir/srilm'
    make depend
    make[1]: 正在进入目录 `/home/lixiang/mtworkdir/srilm'
    for subdir in misc dstruct lm flm lattice utils; do \
    (cd $subdir/src; make SRILM=/home/lixiang/mtworkdir/srilm MACHINE_TYPE=i686 OPTION= MAKE_PIC= depend) || exit 1; \
    done
    make[2]: 正在进入目录 `/home/lixiang/mtworkdir/srilm/misc/src'
    rm -f Dependencies.i686
    gcc -mtune=pentium3 -Wreturn-type -Wimplicit -D_FILE_OFFSET_BITS=64 -I /usr/include/tcl8.5 -I. -I../../include -MM ./option.c ./zio.c ./fcheck.c ./fake-rand48.c ./version.c ./ztest.c | sed -e "s&^&../obj/i686"'$(OBJ_OPTION)'"/\1&g" -e "s&\.o&.o&g" >> Dependencies.i686
    g++ -mtune=pentium3 -Wreturn-type -Wimplicit -DINSTANTIATE_TEMPLATES -D_FILE_OFFSET_BITS=64 -I /usr/include/tcl8.5 -I. -I../../include -MM ./Debug.cc ./File.cc ./tclmain.cc ./testFile.cc | sed -e "s&^&../obj/i686"'$(OBJ_OPTION)'"/\1&g" -e "s&\.o&.o&g" >> Dependencies.i686
    /home/lixiang/mtworkdir/srilm/sbin/generate-program-dependencies ../bin/i686 ../obj/i686 "" ztest testFile | sed -e "s&\.o&.o&g" >> Dependencies.i686
    make[2]:正在离开目录 `/home/lixiang/mtworkdir/srilm/misc/src'
    make[2]: 正在进入目录 `/home/lixiang/mtworkdir/srilm/dstruct/src'
    rm -f Dependencies.i686
    gcc -mtune=pentium3 -Wreturn-type -Wimplicit -D_FILE_OFFSET_BITS=64 -I /usr/include/tcl8.5 -I. -I../../include -MM ./qsort.c | sed -e "s&^&../obj/i686"'$(OBJ_OPTION)'"/\1&g" -e "s&\.o&.o&g" >> Dependencies.i686
    g++ -mtune=pentium3 -Wreturn-type -Wimplicit -DINSTANTIATE_TEMPLATES -D_FILE_OFFSET_BITS=64 -I /usr/include/tcl8.5 -I. -I../../include -MM ./MemStats.cc ./LHashTrie.cc ./SArrayTrie.cc ./Array.cc ./IntervalHeap.cc ./Map.cc ./SArray.cc ./LHash.cc ./Map2.cc ./Trie.cc ./CachedMem.cc ./testArray.cc ./testMap.cc ./benchHash.cc ./testHash.cc ./testSizes.cc ./testCachedMem.cc ./testMap2.cc ./testTrie.cc | sed -e "s&^&../obj/i686"'$(OBJ_OPTION)'"/\1&g" -e "s&\.o&.o&g" >> Dependencies.i686
    /home/lixiang/mtworkdir/srilm/sbin/generate-program-dependencies ../bin/i686 ../obj/i686 "" testArray testMap benchHash testHash testSizes testCachedMem testMap2 testTrie | sed -e "s&\.o&.o&g" >> Dependencies.i686
    make[2]:正在离开目录 `/home/lixiang/mtworkdir/srilm/dstruct/src'
    make[2]: 正在进入目录 `/home/lixiang/mtworkdir/srilm/lm/src'
    rm -f Dependencies.i686
    gcc -mtune=pentium3 -Wreturn-type -Wimplicit -D_FILE_OFFSET_BITS=64 -I /usr/include/tcl8.5 -I. -I../../include -MM ./matherr.c | sed -e "s&^&../obj/i686"'$(OBJ_OPTION)'"/\1&g" -e "s&\.o&.o&g" >> Dependencies.i686
    g++ -mtune=pentium3 -Wreturn-type -Wimplicit -DINSTANTIATE_TEMPLATES -D_FILE_OFFSET_BITS=64 -I /usr/include/tcl8.5 -I. -I../../include -MM ./Prob.cc ./Counts.cc ./XCount.cc ./Vocab.cc ./VocabMap.cc ./VocabMultiMap.cc ./VocabDistance.cc ./SubVocab.cc ./MultiwordVocab.cc ./TextStats.cc ./LM.cc ./LMClient.cc ./LMStats.cc ./RefList.cc ./Bleu.cc ./NBest.cc ./NBestSet.cc ./NgramLM.cc ./NgramStatsInt.cc ./NgramStatsShort.cc ./NgramStatsLong.cc ./NgramStatsLongLong.cc ./NgramStatsFloat.cc ./NgramStatsDouble.cc ./NgramStatsXCount.cc ./NgramCountLM.cc ./Discount.cc ./ClassNgram.cc ./SimpleClassNgram.cc ./DFNgram.cc ./SkipNgram.cc ./HiddenNgram.cc ./HiddenSNgram.cc ./VarNgram.cc ./DecipherNgram.cc ./TaggedVocab.cc ./TaggedNgram.cc ./TaggedNgramStats.cc ./StopNgram.cc ./StopNgramStats.cc ./MultiwordLM.cc ./BayesMix.cc ./LoglinearMix.cc ./AdaptiveMix.cc ./AdaptiveMarginals.cc ./CacheLM.cc ./DynamicLM.cc ./HMMofNgrams.cc ./WordAlign.cc ./WordLattice.cc ./WordMesh.cc ./simpleTrigram.cc ./NgramStats.cc ./Trellis.cc ./testBinaryCounts.cc ./testHash.cc ./testProb.cc ./testXCount.cc ./testParseFloat.cc ./testVocabDistance.cc ./testNgram.cc ./testNgramAlloc.cc ./testMultiReadLM.cc ./hoeffding.cc ./tolower.cc ./testLattice.cc ./testError.cc ./testNBest.cc ./testMix.cc ./testTaggedVocab.cc ./testVocab.cc ./ngram.cc ./ngram-count.cc ./ngram-merge.cc ./ngram-class.cc ./disambig.cc ./anti-ngram.cc ./nbest-lattice.cc ./nbest-mix.cc ./nbest-optimize.cc ./nbest-pron-score.cc ./segment.cc ./segment-nbest.cc ./hidden-ngram.cc ./multi-ngram.cc | sed -e "s&^&../obj/i686"'$(OBJ_OPTION)'"/\1&g" -e "s&\.o&.o&g" >> Dependencies.i686
    /home/lixiang/mtworkdir/srilm/sbin/generate-program-dependencies ../bin/i686 ../obj/i686 "" testBinaryCounts testHash testProb testXCount testParseFloat testVocabDistance testNgram testNgramAlloc testMultiReadLM hoeffding tolower testLattice testError testNBest testMix testTaggedVocab testVocab ngram ngram-count ngram-merge ngram-class disambig anti-ngram nbest-lattice nbest-mix nbest-optimize nbest-pron-score segment segment-nbest hidden-ngram multi-ngram | sed -e "s&\.o&.o&g" >> Dependencies.i686
    make[2]:正在离开目录 `/home/lixiang/mtworkdir/srilm/lm/src'
    make[2]: 正在进入目录 `/home/lixiang/mtworkdir/srilm/flm/src'
    rm -f Dependencies.i686
    g++ -mtune=pentium3 -Wreturn-type -Wimplicit -DINSTANTIATE_TEMPLATES -D_FILE_OFFSET_BITS=64 -I /usr/include/tcl8.5 -I. -I../../include -MM ./FDiscount.cc ./FNgramStats.cc ./FNgramStatsInt.cc ./FNgramSpecs.cc ./FNgramSpecsInt.cc ./FactoredVocab.cc ./FNgramLM.cc ./ProductVocab.cc ./ProductNgram.cc ./wmatrix.cc ./pngram.cc ./fngram-count.cc ./fngram.cc | sed -e "s&^&../obj/i686"'$(OBJ_OPTION)'"/\1&g" -e "s&\.o&.o&g" >> Dependencies.i686
    /home/lixiang/mtworkdir/srilm/sbin/generate-program-dependencies ../bin/i686 ../obj/i686 "" pngram fngram-count fngram | sed -e "s&\.o&.o&g" >> Dependencies.i686
    make[2]:正在离开目录 `/home/lixiang/mtworkdir/srilm/flm/src'
    make[2]: 正在进入目录 `/home/lixiang/mtworkdir/srilm/lattice/src'
    rm -f Dependencies.i686
    g++ -mtune=pentium3 -Wreturn-type -Wimplicit -DINSTANTIATE_TEMPLATES -D_FILE_OFFSET_BITS=64 -I /usr/include/tcl8.5 -I. -I../../include -MM ./Lattice.cc ./LatticeAlign.cc ./LatticeExpand.cc ./LatticeIndex.cc ./LatticeNBest.cc ./LatticeNgrams.cc ./LatticeReduce.cc ./HTKLattice.cc ./LatticeLM.cc ./LatticeDecode.cc ./testLattice.cc ./lattice-tool.cc | sed -e "s&^&../obj/i686"'$(OBJ_OPTION)'"/\1&g" -e "s&\.o&.o&g" >> Dependencies.i686
    /home/lixiang/mtworkdir/srilm/sbin/generate-program-dependencies ../bin/i686 ../obj/i686 "" testLattice lattice-tool | sed -e "s&\.o&.o&g" >> Dependencies.i686
    make[2]:正在离开目录 `/home/lixiang/mtworkdir/srilm/lattice/src'
    make[2]: 正在进入目录 `/home/lixiang/mtworkdir/srilm/utils/src'
    rm -f Dependencies.i686
    /home/lixiang/mtworkdir/srilm/sbin/generate-program-dependencies ../bin/i686 ../obj/i686 "" | sed -e "s&\.o&.o&g" >> Dependencies.i686
    make[2]:正在离开目录 `/home/lixiang/mtworkdir/srilm/utils/src'
    make[1]:正在离开目录 `/home/lixiang/mtworkdir/srilm'
    make release-libraries
    make[1]: 正在进入目录 `/home/lixiang/mtworkdir/srilm'
    for subdir in misc dstruct lm flm lattice utils; do \
    (cd $subdir/src; make SRILM=/home/lixiang/mtworkdir/srilm MACHINE_TYPE=i686 OPTION= MAKE_PIC= release-libraries) || exit 1; \
    done
    make[2]: 正在进入目录 `/home/lixiang/mtworkdir/srilm/misc/src'
    make[2]: 没有什么可以做的为 `release-libraries'。
    make[2]:正在离开目录 `/home/lixiang/mtworkdir/srilm/misc/src'
    make[2]: 正在进入目录 `/home/lixiang/mtworkdir/srilm/dstruct/src'
    make[2]: 没有什么可以做的为 `release-libraries'。
    make[2]:正在离开目录 `/home/lixiang/mtworkdir/srilm/dstruct/src'
    make[2]: 正在进入目录 `/home/lixiang/mtworkdir/srilm/lm/src'
    g++ -mtune=pentium3 -Wreturn-type -Wimplicit -DINSTANTIATE_TEMPLATES -D_FILE_OFFSET_BITS=64 -I /usr/include/tcl8.5 -I. -I../../include -c -g -O3 -o ../obj/i686/NgramLM.o NgramLM.cc
    In file included from Ngram.h:14,
    from NgramLM.cc:36:
    /usr/include/stdio.h:754: error: declaration of C function ‘int fseek(FILE*, __off64_t, int)’ conflicts with
    /usr/include/stdio.h:722: error: previous declaration ‘int fseek(FILE*, long int, int)’ here
    /usr/include/stdio.h:757: error: declaration of C function ‘__off64_t ftell(FILE*)’ conflicts with
    /usr/include/stdio.h:727: error: previous declaration ‘long int ftell(FILE*)’ here
    make[2]: *** [../obj/i686/NgramLM.o] 错误 1
    make[2]:正在离开目录 `/home/lixiang/mtworkdir/srilm/lm/src'
    make[1]: *** [release-libraries] 错误 1
    make[1]:正在离开目录 `/home/lixiang/mtworkdir/srilm'
    make: *** [World] 错误 2

    [回复]

    52nlp 回复:

    这个人的问题和你的似乎是一样的:
    http://www.speech.sri.com/pipermail/srilm-user/2009q4/000794.html
    下一条信息既是他自己给出的解答:
    “I fixed the problem (I had originally set MACHINE_TYPE to i686. I changed it
    to i686-gcc4. ) and managed to compile the whole thing. However I got
    'DIFFERS' for every run of the test suite. ”
    (http://www.speech.sri.com/pipermail/srilm-user/2009q4/000795.html)
    应该是在srilm/MakeFile中将此行“MACHINE_TYPE := $(shell $(SRILM)/sbin/machine-type)”修改为“MACHINE_TYPE := i686-gcc4”,如果test时几乎都出现'DIFFERS',可以试试它的下一条回复里的办法:
    My guess it that $(SRILM)/bin/i686-gcc4 (where the binaries are
    installed) is not in your PATH, so the tests fail because the binaries
    are not found.

    To work around this you can

    make MACHINE_TYPE=i686-gcc4 try

    in the test directory.
    (http://www.speech.sri.com/pipermail/srilm-user/2009q4/000796.html)

    [回复]

  17. 请问我做SRILM中,测试结果基本都是DIFFERS,请问什么原因,谢谢

    [回复]

    52nlp 回复:

    如果按上面的方法编译通过的话,可以在test目录里试试:make MACHINE_TYPE=i686-gcc4
    SRILM测试结果基本都是DIFFERS的情况有时候并不是没有编译成功,而是没有找到编译后的可执行文件路径,你可以看看$(SRILM)/bin/及$(SRILM)/bin/i686-gcc4里有无ngram-count及ngram这两个关键的可执行文件,如果有了,基本就可以用了。

    [回复]

    kisonlee 回复:

    $(SRILM)/bin/里面没有,而$(SRILM)/bin/i686-gcc4里面有,请问什么原因,谢谢

    [回复]

    52nlp 回复:

    $(SRILM)/bin/和$(SRILM)/bin/i686-gcc4分别有一些可执行文件,而ngram和ngram-count就在$(SRILM)/bin/i686-gcc4下,昨天没说清楚,不好意思。

    kisonlee 回复:

    那这些都有啊,为什么还是一堆DIFFERS?谢谢,另外,能问下MAIL么,想多多请教,我是SMT的菜鸟,谢谢。

    [回复]

    52nlp 回复:

    测试时可试过这个命令:
    make MACHINE_TYPE=i686-gcc4
    或者在测试之前,改一下声明,例如将:
    export  PATH=$PATH:/home/52nlp/mtworkdir/srilm/bin/i686:/home/52nlp/mtworkdir/srilm/bin
    修改为:
    export  PATH=$PATH:/home/52nlp/mtworkdir/srilm/bin/i686-gcc4:/home/52nlp/mtworkdir/srilm/bin
    测试出错很大的原因是找不到这些可执行文件的路径,不过既然有了ngram和ngram-count,我估计已经编译成功了。
    Mail“关于”里有,52nlpcn at gmail.com。

    kisonlee 回复:

    谢谢,看到满眼的IDENTICA,心花怒放哈,太感谢了。能问你的MSN么?

    [回复]

    52nlp 回复:

    不客气,msn同email。

    kisonlee 回复:

    可是有的地方还是DIFFERS,是啥原因?

    [回复]

    52nlp 回复:

    具体原因我说不上来,不过是允许有少量的DIFFERS,毕竟我们用到的就那么几个,应该没啥问题了。

  18. 我又回来了,研究室重装双系统,结果Moses也要重装,又遇到问题了,回来讨教下,嘿嘿,问题如下:
    In file included from InputFileStream.cpp:23:
    gzfilebuf.h:5:18: error: zlib.h: 没有该文件或目录
    In file included from InputFileStream.cpp:23:
    gzfilebuf.h:76: error: ‘gzFile’ does not name a type
    In file included from InputFileStream.cpp:23:
    gzfilebuf.h: In constructor ‘gzfilebuf::gzfilebuf(const char*)’:
    gzfilebuf.h:11: error: ‘_gzf’ was not declared in this scope
    gzfilebuf.h:11: error: ‘gzopen’ was not declared in this scope
    gzfilebuf.h: In destructor ‘virtual gzfilebuf::~gzfilebuf()’:
    gzfilebuf.h:16: error: ‘_gzf’ was not declared in this scope
    gzfilebuf.h:16: error: ‘gzclose’ was not declared in this scope
    gzfilebuf.h: At global scope:
    gzfilebuf.h:18: warning: unused parameter ‘c’
    gzfilebuf.h:24: warning: unused parameter ‘s’
    gzfilebuf.h:24: warning: unused parameter ‘num’
    In file included from InputFileStream.cpp:23:
    gzfilebuf.h:29: warning: unused parameter ‘sp’
    gzfilebuf.h:29: warning: unused parameter ‘which’
    gzfilebuf.h: In member function ‘virtual int gzfilebuf::underflow()’:
    gzfilebuf.h:55: error: ‘_gzf’ was not declared in this scope
    gzfilebuf.h:55: error: ‘gzread’ was not declared in this scope
    gzfilebuf.h: In member function ‘virtual std::streamsize gzfilebuf::xsgetn(char*, std::streamsize)’:
    gzfilebuf.h:72: error: ‘_gzf’ was not declared in this scope
    gzfilebuf.h:72: error: ‘gzread’ was not declared in this scope
    make[3]: *** [InputFileStream.o] 错误 1
    问题跟以前的不太一样,我现在用的是gcc4.4之前的问题加-std=c++0x,也已经加过了,现在又不知道问题处在哪儿了?请求帮助~~!

    [回复]

  19. 呵呵,谢谢,问题解决了,在上次你发给我的Moses-support Error网站上面找到答案了,没有安装zlib-devel rpm。
    感谢~~!:)

    [回复]

    52nlp 回复:

    呵呵,解决就好,一般情况下很多问题别人可能已经遇到和解决过,多用Google!

    [回复]

  20. 在make release 后出现/bin/sh: ./check-dependencies.pl: not found,可是该文件在scripts中啊,看下邮件列表中的,似乎也不能解决问题,或者是我没有看懂解决的办法,谢谢。

    [回复]

    52nlp 回复:

    试试下面这个方法看看:
    I changed the line "@./check-dependencies.pl ..." to "perl check-dependencies.pl ..." in makefile, result is it worked.

    [回复]

  21. 我编译srilm时候最后报这样的错误(ubuntu9.10)
    tclmain.cc:8:17: error: tcl.h: No such file or directory
    我google一下,也对照了你修改 ../common/makefile.machine.i686 文件
    改成:
    TCL_INCLUDE = -I/usr/include/tcl8.4
    TCL_LIBRARY = -L/usr/lib/tcl8.4 -ltcl
    也试过tcl8.5
    不过都报上面的错误,你的tcl应该就是指tclsh吧
    tclsh我装了的
    也试过 sudo apt-get install tcl
    系统报已经安装最新版了
    我实在不知道为什么还是报头文件有问题

    [回复]

  22. 我is /usr/lib/tcl*
    系统说没这样的文件

    [回复]

    52nlp 回复:

    如果tcl8.4已经有了,再试着装一个tcl8.4-dev,这个好像是库文件,装完之后看看/usr/include里是否有tcl8.4文件夹,/usr/lib里是否有tclsh8.4。同样,你可以把tcl8.5和tcl8.5-dev装了试试。

    [回复]

  23. 我和那位kisonlee一样,只是我的$(SRILM)/bin/i686-gcc4下没有ngram和ngram-count可执行文件这种情况要怎么弄啊。

    [回复]

    52nlp 回复:

    没有ngram和ngram-count编译肯定有问题,再查查看,尤其是那些必需的程序都要先装好。

    [回复]

    tornado 回复:

    上面说的要装的我都装了
    zhao@zhao-desktop:~$ sudo apt-get install gcc
    [sudo] password for zhao:
    正在读取软件包列表... 完成
    正在分析软件包的依赖关系树
    正在读取状态信息... 完成
    gcc 已经是最新的版本了。
    共升级了 0 个软件包,新安装了 0 个软件包,要卸载 0 个软件包,有 63 个软件未被升级。
    zhao@zhao-desktop:~$ sudo apt-get install gawk
    正在读取软件包列表... 完成
    正在分析软件包的依赖关系树
    正在读取状态信息... 完成
    gawk 已经是最新的版本了。
    共升级了 0 个软件包,新安装了 0 个软件包,要卸载 0 个软件包,有 63 个软件未被升级。
    zhao@zhao-desktop:~$ sudo apt-get install gzip
    正在读取软件包列表... 完成
    正在分析软件包的依赖关系树
    正在读取状态信息... 完成
    gzip 已经是最新的版本了。
    共升级了 0 个软件包,新安装了 0 个软件包,要卸载 0 个软件包,有 63 个软件未被升级。
    zhao@zhao-desktop:~$ sudo apt-get install bzip2
    正在读取软件包列表... 完成
    正在分析软件包的依赖关系树
    正在读取状态信息... 完成
    bzip2 已经是最新的版本了。
    共升级了 0 个软件包,新安装了 0 个软件包,要卸载 0 个软件包,有 63 个软件未被升级。
    zhao@zhao-desktop:~$ sudo apt-get install p7zip
    正在读取软件包列表... 完成
    正在分析软件包的依赖关系树
    正在读取状态信息... 完成
    p7zip 已经是最新的版本了。
    共升级了 0 个软件包,新安装了 0 个软件包,要卸载 0 个软件包,有 63 个软件未被升级。
    zhao@zhao-desktop:~$ sudo apt-get install tcl8.5
    正在读取软件包列表... 完成
    正在分析软件包的依赖关系树
    正在读取状态信息... 完成
    tcl8.5 已经是最新的版本了。
    共升级了 0 个软件包,新安装了 0 个软件包,要卸载 0 个软件包,有 63 个软件未被升级。
    zhao@zhao-desktop:~$ sudo apt-get install tcl8.5-dev
    正在读取软件包列表... 完成
    正在分析软件包的依赖关系树
    正在读取状态信息... 完成
    tcl8.5-dev 已经是最新的版本了。
    共升级了 0 个软件包,新安装了 0 个软件包,要卸载 0 个软件包,有 63 个软件未被升级。
    zhao@zhao-desktop:~$ sudo apt-get install csh
    正在读取软件包列表... 完成
    正在分析软件包的依赖关系树
    正在读取状态信息... 完成
    csh 已经是最新的版本了。
    共升级了 0 个软件包,新安装了 0 个软件包,要卸载 0 个软件包,有 63 个软件未被升级。

    我比较菜 在make World的时候有下面这些错误,不知道有没有关系,如果有关系的话怎么改?谢谢
    tools/srilm/lib/i686-gcc4/libmisc.a -L/usr/lib/tcl8.5 -lm 2>&1 | c++filt
    g++: /home/zhao/tools/srilm/lib/i686-gcc4/libmisc.a: 没有该文件或目录
    /home/zhao/tools/srilm/sbin/decipher-install 0555 ../bin/i686-gcc4/segment /home/zhao/tools/srilm/bin/i686-gcc4
    ERROR: File to be installed (../bin/i686-gcc4/segment) does not exist.
    ERROR: File to be installed (../bin/i686-gcc4/segment) is not a plain file.
    Usage: decipher-install ...
    mode: file permission mode, in octal
    file1 ... fileN: files to be installed
    directory: where the files should be installed

    files = ../bin/i686-gcc4/segment
    directory = /home/zhao/tools/srilm/bin/i686-gcc4
    mode = 0555

    make[2]: [/home/zhao/tools/srilm/bin/i686-gcc4/segment] 错误 1 (忽略)
    g++ -mtune=pentium3 -Wreturn-type -Wimplicit -Wformat -DINSTANTIATE_TEMPLATES -I/user/include/tcl8.5 -I. -I/home/zhao/tools/srilm/include -u matherr -L/home/zhao/tools/srilm/lib/i686-gcc4 -g -O3 -o ../bin/i686-gcc4/segment-nbest ../obj/i686-gcc4/segment-nbest.o ../obj/i686-gcc4/liboolm.a -lm -ldl /home/zhao/tools/srilm/lib/i686-gcc4/libflm.a /home/zhao/tools/srilm/lib/i686-gcc4/libdstruct.a /home/zhao/tools/srilm/lib/i686-gcc4/libmisc.a -L/usr/lib/tcl8.5 -lm 2>&1 | c++filt
    g++: /home/zhao/tools/srilm/lib/i686-gcc4/libmisc.a: 没有该文件或目录
    /home/zhao/tools/srilm/sbin/decipher-install 0555 ../bin/i686-gcc4/segment-nbest /home/zhao/tools/srilm/bin/i686-gcc4
    ERROR: File to be installed (../bin/i686-gcc4/segment-nbest) does not exist.
    ERROR: File to be installed (../bin/i686-gcc4/segment-nbest) is not a plain file.
    Usage: decipher-install ...
    mode: file permission mode, in octal
    file1 ... fileN: files to be installed
    directory: where the files should be installed

    files = ../bin/i686-gcc4/segment-nbest
    directory = /home/zhao/tools/srilm/bin/i686-gcc4
    mode = 0555

    make[2]: [/home/zhao/tools/srilm/bin/i686-gcc4/segment-nbest] 错误 1 (忽略)
    g++ -mtune=pentium3 -Wreturn-type -Wimplicit -Wformat -DINSTANTIATE_TEMPLATES -I/user/include/tcl8.5 -I. -I/home/zhao/tools/srilm/include -u matherr -L/home/zhao/tools/srilm/lib/i686-gcc4 -g -O3 -o ../bin/i686-gcc4/hidden-ngram ../obj/i686-gcc4/hidden-ngram.o ../obj/i686-gcc4/liboolm.a -lm -ldl /home/zhao/tools/srilm/lib/i686-gcc4/libflm.a /home/zhao/tools/srilm/lib/i686-gcc4/libdstruct.a /home/zhao/tools/srilm/lib/i686-gcc4/libmisc.a -L/usr/lib/tcl8.5 -lm 2>&1 | c++filt
    g++: /home/zhao/tools/srilm/lib/i686-gcc4/libmisc.a: 没有该文件或目录
    /home/zhao/tools/srilm/sbin/decipher-install 0555 ../bin/i686-gcc4/hidden-ngram /home/zhao/tools/srilm/bin/i686-gcc4
    ERROR: File to be installed (../bin/i686-gcc4/hidden-ngram) does not exist.
    ERROR: File to be installed (../bin/i686-gcc4/hidden-ngram) is not a plain file.
    Usage: decipher-install ...
    mode: file permission mode, in octal
    file1 ... fileN: files to be installed
    directory: where the files should be installed

    files = ../bin/i686-gcc4/hidden-ngram
    directory = /home/zhao/tools/srilm/bin/i686-gcc4
    mode = 0555

    make[2]: [/home/zhao/tools/srilm/bin/i686-gcc4/hidden-ngram] 错误 1 (忽略)
    g++ -mtune=pentium3 -Wreturn-type -Wimplicit -Wformat -DINSTANTIATE_TEMPLATES -I/user/include/tcl8.5 -I. -I/home/zhao/tools/srilm/include -u matherr -L/home/zhao/tools/srilm/lib/i686-gcc4 -g -O3 -o ../bin/i686-gcc4/multi-ngram ../obj/i686-gcc4/multi-ngram.o ../obj/i686-gcc4/liboolm.a -lm -ldl /home/zhao/tools/srilm/lib/i686-gcc4/libflm.a /home/zhao/tools/srilm/lib/i686-gcc4/libdstruct.a /home/zhao/tools/srilm/lib/i686-gcc4/libmisc.a -L/usr/lib/tcl8.5 -lm 2>&1 | c++filt
    g++: /home/zhao/tools/srilm/lib/i686-gcc4/libmisc.a: 没有该文件或目录
    /home/zhao/tools/srilm/sbin/decipher-install 0555 ../bin/i686-gcc4/multi-ngram /home/zhao/tools/srilm/bin/i686-gcc4
    ERROR: File to be installed (../bin/i686-gcc4/multi-ngram) does not exist.
    ERROR: File to be installed (../bin/i686-gcc4/multi-ngram) is not a plain file.
    Usage: decipher-install ...
    mode: file permission mode, in octal
    file1 ... fileN: files to be installed
    directory: where the files should be installed

    files = ../bin/i686-gcc4/multi-ngram
    directory = /home/zhao/tools/srilm/bin/i686-gcc4
    mode = 0555

    make[2]: [/home/zhao/tools/srilm/bin/i686-gcc4/multi-ngram] 错误 1 (忽略)
    make[2]:正在离开目录 `/home/zhao/tools/srilm/lm/src'
    make[2]: 正在进入目录 `/home/zhao/tools/srilm/flm/src'
    g++ -mtune=pentium3 -Wreturn-type -Wimplicit -Wformat -DINSTANTIATE_TEMPLATES -I/user/include/tcl8.5 -I. -I/home/zhao/tools/srilm/include -u matherr -L/home/zhao/tools/srilm/lib/i686-gcc4 -g -O3 -o ../bin/i686-gcc4/fngram-count ../obj/i686-gcc4/fngram-count.o ../obj/i686-gcc4/libflm.a -lm -ldl /home/zhao/tools/srilm/lib/i686-gcc4/liboolm.a /home/zhao/tools/srilm/lib/i686-gcc4/libdstruct.a /home/zhao/tools/srilm/lib/i686-gcc4/libmisc.a -L/usr/lib/tcl8.5 -lm 2>&1 | c++filt
    g++: /home/zhao/tools/srilm/lib/i686-gcc4/libmisc.a: 没有该文件或目录
    /home/zhao/tools/srilm/sbin/decipher-install 0555 ../bin/i686-gcc4/fngram-count /home/zhao/tools/srilm/bin/i686-gcc4
    ERROR: File to be installed (../bin/i686-gcc4/fngram-count) does not exist.
    ERROR: File to be installed (../bin/i686-gcc4/fngram-count) is not a plain file.
    Usage: decipher-install ...
    mode: file permission mode, in octal
    file1 ... fileN: files to be installed
    directory: where the files should be installed

    files = ../bin/i686-gcc4/fngram-count
    directory = /home/zhao/tools/srilm/bin/i686-gcc4
    mode = 0555

    make[2]: [/home/zhao/tools/srilm/bin/i686-gcc4/fngram-count] 错误 1 (忽略)
    g++ -mtune=pentium3 -Wreturn-type -Wimplicit -Wformat -DINSTANTIATE_TEMPLATES -I/user/include/tcl8.5 -I. -I/home/zhao/tools/srilm/include -u matherr -L/home/zhao/tools/srilm/lib/i686-gcc4 -g -O3 -o ../bin/i686-gcc4/fngram ../obj/i686-gcc4/fngram.o ../obj/i686-gcc4/libflm.a -lm -ldl /home/zhao/tools/srilm/lib/i686-gcc4/liboolm.a /home/zhao/tools/srilm/lib/i686-gcc4/libdstruct.a /home/zhao/tools/srilm/lib/i686-gcc4/libmisc.a -L/usr/lib/tcl8.5 -lm 2>&1 | c++filt
    g++: /home/zhao/tools/srilm/lib/i686-gcc4/libmisc.a: 没有该文件或目录
    /home/zhao/tools/srilm/sbin/decipher-install 0555 ../bin/i686-gcc4/fngram /home/zhao/tools/srilm/bin/i686-gcc4
    ERROR: File to be installed (../bin/i686-gcc4/fngram) does not exist.
    ERROR: File to be installed (../bin/i686-gcc4/fngram) is not a plain file.
    Usage: decipher-install ...
    mode: file permission mode, in octal
    file1 ... fileN: files to be installed
    directory: where the files should be installed

    files = ../bin/i686-gcc4/fngram
    directory = /home/zhao/tools/srilm/bin/i686-gcc4
    mode = 0555

    make[2]: [/home/zhao/tools/srilm/bin/i686-gcc4/fngram] 错误 1 (忽略)
    make[2]:正在离开目录 `/home/zhao/tools/srilm/flm/src'
    make[2]: 正在进入目录 `/home/zhao/tools/srilm/lattice/src'
    make[2]: *** 没有规则可以创建“../bin/i686-gcc4/lattice-tool”需要的目标“/home/zhao/tools/srilm/lib/i686-gcc4/libmisc.a”。 停止。

    [回复]

    tornado 回复:

    终于装好了。原来是gcc和g++的安装路径不对,以前看网上的说明都说那个地方不用改,我就没改。。。当时也不知道是什么意思。现在知道了。。谢谢。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注