Boost 和 Boost.Build 的設置

問題python

安裝編譯完 Boost 後,若是不設置 BOOST_ROOTBOOST_BUILD_PATH 則可能致使使用 bjam 時定位到 Boost 默認的路徑 /usr/share/boost-build,而若是此目錄下已有系統默認的 Boost 相關安裝文件,就會致使 Boost 當前版本和默認安裝版本不匹配的錯誤。bootstrap

方案bash

直接修改 .bashrc,加入下述兩句便可 (注意,我這裏使用的路徑是我默認的 boost 編譯路徑 /usr/local/boost_1_67_0,讀者應該根據本身的路徑更改)服務器

export BOOST_ROOT=/usr/local/boost_1_67_0
export BOOST_BUILD_PATH=/usr/local/boost_1_67_0

 ======================================================python2.7

注意,以上是迂迴的作法,正規的作法以下:函數

0.1) 安裝以前,最好把連接 /usr/bin/python (默認指向 python2.7) 修改成指向 python3 ,安裝完再調回去。之後主要使用 python3。 ui

0.2) 由於 python3 的頭文件路徑可能爲 /usr/include/python3.6m,而 Boost 默認查找的路徑爲  -I"/usr/include/python3.6",因此須要在 /usr/include/ 下新建一個連接 /usr/include/python3.6,使其指向 /usr/include/python3.6m。spa

0.3) 對於服務器,要求穩定,能夠選擇 CentOS。對於我的應用環境,建議使用 Ubuntu,由於 CentOS 軟件過於陳舊,編譯最新的 BOOST,PyBind11,可能會有一些兼容性問題須要手動調節,好比上述的 0.2) 在 Ubuntu 18.04 下是沒有的。code

1) Boost 的編譯blog

注:Boost 有些庫須要編譯成動態連接或靜態庫文件,才能使用,大多數庫都只有頭文件,頭文件裏的函數以模板,內聯方式實現,直接包含便可。

若是直接將 Boost 解壓縮到 /usr/local/boost_1_67_0,並且編譯安裝採用默認路徑,即沒有帶設置參數 --prefix=xxx,則 Boost 默認將編譯的庫文件存放在 /usr/local/lib 下,而頭文件存放在 /usr/local/include 下,這樣在編譯 Boost 相關程序時,若是須要連接庫文件,則直接指向 /usr/local/lib 中相應的靜態庫或動態庫便可,而須要的頭文件則能夠指向 /usr/local/include 或者能夠指向原始的 Boost 包解壓路徑 /usr/local/boost_1_67_0 (也即 BOOST_ROOT)。

用到的編譯安裝命令以下,(注意,由於要安裝在 /usr/local/ 下,因此安裝時須要 sudo)

/usr/local/boost_1_67_0$ ./bootstrap.sh
/usr/local/boost_1_67_0$ sudo ./b2 install

2)Boost.Build 的編譯

注:Boost.Build 是 Boost 官方工做人員,爲了應對 Boost 在各類環境下的編譯安裝而開發的一套 Build 系統,能夠徹底獨立於 Boost 庫運行,支持 C/C++ 工程的 Build  和管理,功能相似於 cmake。

Boost.Build 隨 Boost 庫發行,也能夠單獨下載編譯安裝,此處以 Boost 庫附帶的 Boost.Build 安裝爲例,首先進入 /usr/local/boost_1_67_0/tools/build,而後運行命令以下,

/usr/local/boost_1_67_0/tools/build$ ./bootstrap.sh
/usr/local/boost_1_67_0/tools/build$ sudo ./b2 install --prefix=/usr/local/

這樣,安裝完後,可執行文件 b2 和 bjam (兩個徹底同樣)將在 /usr/local/bin 下,而 Boost.Build 系統文件將在 /usr/local/share/boost-build/ 下。

注意:若是安裝以前,系統已經有默認的 Boost 可執行文件 b2 或 bjam 在 /usr/local/bin 下,有默認的 Boost.Build 系統文件在 /usr/local/share/boost-build 下,先將它們刪除,再安裝當前的新版本便可。

=======================================================

安裝完成以後,解決找不到動態連接庫的問題

在 /etc/ld.so.conf.d/ 下建立文件 boost_lib.conf (文件名任意),添加 boost lib 路徑 /usr/local/lib,而後執行以下命令便可,

$ sudo ldconfig

 

完。

相關文章
相關標籤/搜索