因為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
就好了!