怎样编译安装Boost

2016年8月9日 | 分类: 【技术】

【介绍】

Boost库是一个开源可移植的为C++语言标准库提供扩展的一些C++程序库的总称。是C++标准化进程的开发引擎之一。

官网:http://www.boost.org/

文档:http://linuxfromscratch.org/blfs/view/7.8/general/boost.html (boost_1_59_0)
文档:http://www.linuxfromscratch.org/blfs/view/svn/general/boost.html (Boost-1.70.0 )

参考:https://www.cnblogs.com/LyndonYoung/articles/5288618.html

下载:http://sourceforge.net/projects/boost/

【安装】

编译安装 Boost 1.70.0 :

目前最新版本:Boost 1.70.0

wget http://downloads.sourceforge.net/project/boost/boost/1.70.0/boost_1_70_0.tar.bz2 && tar -jxf boost_1_70_0.tar.bz2 && cd boost_1_70_0
sed -e '1 i#ifndef Q_MOC_RUN' -e '$ a#endif' -i boost/type_traits/detail/has_binary_operator.hpp 
./bootstrap.sh --prefix=/usr
./b2 stage threading=multi link=shared
./b2 install threading=multi link=shared

编译安装 Boost 1.69.0 :

wget http://downloads.sourceforge.net/project/boost/boost/1.69.0/boost_1_69_0.tar.bz2 && tar -jxf boost_1_69_0.tar.bz2 && cd boost_1_69_0
sed -e '1 i#ifndef Q_MOC_RUN' -e '$ a#endif' -i boost/type_traits/detail/has_binary_operator.hpp && ./bootstrap.sh --prefix=/usr && ./b2 stage threading=multi link=shared && ./b2 install threading=multi link=shared

编译安装 Boost 1.59.0 :

MySQL5.7系列,要求boost_1_59_0。

wget http://downloads.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.bz2 && tar -jxf boost_1_59_0.tar.bz2 && cd boost_1_59_0
sed -e '1 i#ifndef Q_MOC_RUN' -e '$ a#endif' -i boost/type_traits/detail/has_binary_operator.hpp && ./bootstrap.sh --prefix=/usr && ./b2 stage threading=multi link=shared && ./b2 install threading=multi link=shared

【版本】

查看Boost库版本:

打开文件:

/usr/include/boost/version.hpp

看到里面的Boost版本号:

#define BOOST_LIB_VERSION "1_68"

MySQL版本和Boost版本的对应关系:

在MySQL编译时,在configure配置步骤时可能会提示Boost版本不对,必须按照提示安装相应版本:

1. MySQL5.7.7要求boost_1_57_0
2. MySQL5.7.8要求boost_1_58_0
3. MySQL5.7.9之后都使用boost_1_59_0

【路径】

编译产生的boost目录将拷贝至 /usr/include/boost ,相应的库 stage/lib/ 下的所有文件将拷贝至 /usr/lib/libboost_* 。

Boost头文件路径:/usr/include/boost
Boost库文件路径:/usr/lib

比如编译 nghttp2 时:

--with-boost-libdir=/usr/lib

【卸载】

因为只是简单地拷贝头文件和库文件,所以直接删除Boost库头文件和库文件即可:

rm -rf /usr/include/boost
rm /usr/lib/*boost*

【排错】

报错:fatal error: bzlib.h: No such file or directory

背景:在 Ubuntu 18 上编译安装 Boost

参考:https://www.cnblogs.com/qq952693358/p/8563048.html

Boost依赖bzlib.h尚未安装,通过以下步骤解决问题:

sudo apt-get install libboost-all-dev
sudo apt-get install libbz2-dev