因为Ubuntu10.10比较新,根据前人的博客,我自己实验了很久,始终是出现了这样和那样的错误,功夫不负有心人,终于解决了!
这里把步骤书写下来,希望看到此帖的人不用再走弯路.
在安装之前,可以配置一下Ubuntu的源,这样的速度会快一些!
(1)因为Ubuntu10.10的gcc的版本较高,所以需要下载一个较低的版本,并将其设为默认版本。
sudo apt-get install gcc-4.1
接下来,将gcc-4.1设置为默认的gcc编译器
sudo mv /usr/bin/gcc /usr/bin/gcc.bak
sudo ln -s /usr/bin/gcc-4.1 /usr/bin/gcc
此时可以通过查看 gcc--version 查看当前的默认gcc版本号,这个是我的结果:
gcc(GCC) 4.1.3 20080704 (prerelease) (Ubuntu 4.1.2-29ubuntu1)
Copyright(C) 2006 Free Software Foundation, Inc.
This isfree software; see the source for copying conditions. There is NO
warranty;not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
(2)下载相关的软件:g++,make,gawk,gzip,bzip2,p7zip,tcl8.5,csh
可以通过which* 来查看安装的路径,如:which make
如果没有安装的话,可以使用:sudo apt-get install * 来安装,如: sudo apt-get install tcl8.5
(3)一切条件准备就绪,接下来开始正式下载和安装SRILM
我下载的版本是1.5.12,下载地址是:
http://www-speech.sri.com/projects/srilm/download.html
我下载到的目录是: /home/administrator/srilm/srilm.tgz
cd /home/administrator/srilm/
sudo tar -zxvf srilm.tgz
sudo gedit Makefile
在#SRILM = /home/speech/stolcke/project/srilm/devel后面添加一行,内容为:
SRILM= /home/administrator/srilm/
在MACHINE_TYPE:= $(shell $(SRILM)/sbin/machine-type)前面添加#,并另起一行输入:
MACHINE_TYPE:= i686
保存关闭。
cd common/
sudo gedit Makefile.machine.i686
将 #Use the GNU C compiler.下面的三行改成:
GCC_FLAGS= -mtune=pentium3 -Wreturn-type -Wimplicit
CC= gcc $(GCC_FLAGS)
CXX= g++ $(GCC_FLAGS) -DINSTANTIATE_TEMPLATES
将#Tcl support (standard in Linux)下面的两行改成:
TCL_INCLUDE= -I /usr/include/tcl8.5
TCL_LIBRARY= -L /usr/lib/tcl8.5
将 # Location of gawk binary 下面的一行改为
GAWK = /usr/bin/gawk
修改环境变量:
sudo gedit /etc/profile
在最后一行umask022
前面添加一行:
export PATH=$PATH:/home/administrator/srilm/bin/i686:/home/administrator/srilm/bin
接下来是执行编译步骤
cd ..
make World
执行完成之后,测试一下
make test
如果出现IDENTICAL,就说明成功了!
例如
***Running test multi-ngram ***
sh:cannot create output/multi-ngram.i686.stdout: Permission denied
Commandexited with non-zero status 2
0.00user0.00system 0:00.00elapsed ?%CPU (0avgtext+0avgdata 2112maxresident)k
0inputs+0outputs(0major+262minor)pagefaults 0swaps
/home/administrator/srilm//sbin/go.run-test:35: cannot create output/multi-ngram.i686.stderr.new: Permissiondenied
/home/administrator/srilm//sbin/go.run-test:35: cannot create output/multi-ngram.i686.stdout.new: Permissiondenied
multi-ngram:stdout output IDENTICAL.
multi-ngram:stderr output IDENTICAL.
好,就写到这里,大家有什么问题,可以给我留言!
这里注意一下,有的时候会发现在终端输入ngram,会出现下面结果:
ngram:找不到命令
这是路径配置的问题,在终端下输入
export PATH=$PATH:/home/administrator/srilm/bin/i686:/home/administrator/srilm/bin
就好了!