问题:python
安装编译完 Boost 后,若是不设置 BOOST_ROOT 和 BOOST_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
完。