轉自:http://www.cnblogs.com/cocowool/archive/2011/08/18/2144142.html
假設要安裝的是boost 1.47
$cd path/to/boost_1_47_0
$./bootstrap.sh --prefix=/path/to/installation/prefix
$./b2 install
如果不帶--prefix參數的話(推薦),預設路徑是 /usr/local/include 和 /usr/local/lib
以上操作需要一段時間,可能比較長。完成後,會在 /path/to/installation/prefix 下看到 include 和 lib 兩個子目錄,分別是 boost 安裝後的標頭檔和庫檔案(靜態庫和動態庫)
注意,./bootstrap.sh中使用了--prefix參數,可能導致連結了boost動態庫的可執行程式在運行時,找不到boost動態庫檔案。例如,例如一個可執行檔t,運行時需要依賴libboost_system.so.1.52.0,而libboost_system.so.1.52.0位於/maomao/boost-install/lib 路徑下。執行./t 時提示找不到libboost_system.so.1.52.0:
./t: error while loading shared libraries: libboost_system.so.1.52.0: cannot open shared object file: No such file or directory
執行ldd -d ./t 時,輸出如下:
linux-vdso.so.1 => (0x00007fff7dfff000)
libboost_system.so.1.52.0 => not found
libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x0000003b67800000)
libm.so.6 => /lib64/libm.so.6 (0x0000003b5b800000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x0000003b66c00000)
libc.so.6 => /lib64/libc.so.6 (0x0000003b5ac00000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003b5b400000)
/lib64/ld-linux-x86-64.so.2 (0x0000003b5a800000)
即,沒有找到libboost_system.so.1.52.0動態庫檔案。一個可行的解決辦法是:在/lib64 下建立一個軟連結
ln -s /maomao/boost-install/lib/libboost_system.so.1.52.0 /lib64/libboost_system.so.1.52.0
再次執行 ldd -d ./t,輸出為:
linux-vdso.so.1 => (0x00007ffff4bff000)
libboost_system.so.1.52.0 => /lib64/libboost_system.so.1.52.0 (0x00007fe4ad0d7000)
libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x0000003b67800000)
libm.so.6 => /lib64/libm.so.6 (0x0000003b5b800000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x0000003b66c00000)
libc.so.6 => /lib64/libc.so.6 (0x0000003b5ac00000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003b5b400000)
librt.so.1 => /lib64/librt.so.1 (0x0000003b5bc00000)
/lib64/ld-linux-x86-64.so.2 (0x0000003b5a800000) 即找到了那個動態庫檔案。
這樣做雖然可行,但如果多個boost動態庫檔案都找不到,就要建多個軟連結。更好的辦法是:
開啟/etc/ld.so.conf加入一行:/maomao/boost-install/lib,即在/etc/ld.so.conf 中加入boost的所有庫檔案的路徑。
然後執行/sbin/ldconfig /etc/ld.so.conf 就可以了。
另外,build過程中可能出現某些boost庫build失敗,有類似下面的error輸出:
boost/python/object_slices.hpp PyObject was not declared in this scope
/libs/iostreams/src/bzip2.cpp:83: error: expected type-specifier before 'bz_stream'
實際上是沒裝相應的開發包,解決辦法就是先安裝這些開發包:
yum install python-devel.x86_64
yum install bzip2-devel.x86_64
然後再執行 ./b2 install