Boost 和 Boost.Build 的設置

https://www.cnblogs.com/gaowengang/p/8994370.html

 

Boost 和 Boost.Build 的設置

問題

 

問題

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

方案

直接修改 .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

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

注意,以上是迂迴的做法,正規的做法如下:

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

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

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

1) Boost 的編譯

注: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

 

完。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章