在編譯kenlm的時候需要安裝boost,去官網下載boost安裝包,然后按照以下步驟安裝。
-----------------以下內容,網上轉載------------------------------
boost中,用到了別的函數庫,所以為了使用boost中相應的功能,需要先安裝系統中可能缺失的庫
- apt-get install mpi-default-dev #安裝mpi庫
- apt-get install libicu-dev #支持正則表達式的UNICODE字符集
- apt-get install python-dev #需要python的話
- apt-get install libbz2-dev #如果編譯出現錯誤:bzlib.h: No such file or directory
如果在安裝以上庫失敗的話可以嘗試一下用
sudo apt-get update
然后在進行安裝。
上述函數庫裝好之后,就可以編譯boost庫了。
解壓boost_1_49_0.tar.bz2,得到/boost_1_49_0,將當前工作目錄切換到此文件夾下。
打開解壓后的文件夾,里面有個bootstrap.sh的腳本文件,運行這個腳本
./bootstrap.sh
生成bjam,上述命令可以帶有各種選項,具體可參考幫助文檔: ./bootstrap.sh --help
。其中--prefix
參數,可以指定安裝路徑,如果不帶--prefix
參數的話(推薦),默認路徑是 /usr/local/include
和 /usr/local/lib
,分別存放頭文件和各種庫。執行完成后,會生成bjam
,已經存在的腳本將會被自動備份。
(注意,boost 1.49會在當前目錄下,生成兩個文件bjam
和b2
,這兩個是一樣的)
編譯完成后,進行安裝,也就是將頭文件和生成的庫,放到指定的路徑(--prefix)下
注意,必須用管理員權限,否則無法寫入到/usr/local/*目錄下,sudo ./b2 install
安裝結束后可以進行測試一下
建立一個test.cpp文件
touch test.cpp
vim test.cpp
#!c
#include<iostream>
#include<boost/bind.hpp>
using namespace std;
using namespace boost;
int fun(int x,int y){return x+y;}
int main(){
int m=1;int n=2;
cout<<boost::bind(fun,_1,_2)(m,n)<<endl;
return 0;
}
編譯
g++ test.cpp -o test
執行:
./test
結果:
3