1.5.3 安装Boost C++库
刚刚我们简单尝试了Boost的头文件库,这并不需要对Boost库本身进行编译。而后面的小节将链接 Boost的静态库,需要提前准备已经编译好的Boost库文件。我们可以自行构建Boost库,或者下载安装预编译的二进制文件。
在Windows中构建Boost库
打开Visual Studio的命令行工具,执行下列命令即可完成Boost库的构建:
> cd C:\boost
> bootstrap
> .\b2
构建过程较为耗时,请耐心等待。构建完成后,可以在C:\boost\stage\lib目录中看到所有构建好的Boost静态库。另外,在b2命令后追加参数link=shared,static即可同时构建动态库。此时,C:\boost\stage\lib目录中会同时存在静态库、动态库和导入库。由于静态库和导入库的扩展名都是.lib,Boost通过文件名前缀来辨别二者:lib开头的.lib文件是静态库,而那些与动态库文件名完全匹配的则是动态库的导入库。
在Linux中构建Boost库
在Linux中,构建Boost库的步骤几乎与Windows中一致,打开终端执行以下命令:
$ cd ~/boost
$ ./bootstrap.sh
$ ./b2
喝一杯茶再回来,应该就能在~/boost/stage/lib目录中看到所有构建好的Boost动态库及静态库了!
在Windows中安装预编译的Boost库
由于C++标准不保证编译后的应用程序二进制接口(Application Binary Interface,ABI)稳定性,不同版本的编译器编译出的程序无法保证相互引用而不出错。所以,我们必须根据微软C++工具集(Microsoft C++ Toolset)的版本号来决定安装哪个版本的预编译Boost库。读者如果不确定正在使用哪个版本的工具集,可以打开Visual Studio命令行工具,输出环境变量 VCToolsVersion:
> echo %VCToolsVersion%
14.27.29016
其中,主版本号14和次版本号的第一个数字2唯一决定其ABI稳定性。也就是说,如果Boost库是通过14.2*版本的工具集构建的,就能被上述“14.27.29016”版本的工具集引用。网络上有很多针对各个版本的工具集预编译好的Boost库二进制文件,下载时,一定要注意挑选匹配的版本,还要区分一下32位和64位的版本。
因为笔者用的是14.27.29016版本的工具集,所以下载的安装包是boost_1_74_0-msvc- 14.2-64.exe。下载完成后,运行安装程序将其安装到某一目录即可。本书假定预编译Boost库的安装根目录为C:\boost_prebuilt(注意区分自行构建的Boost库根目录C:\boost,后面会分别演示)。
在Ubuntu中安装预编译的Boost库
在Ubuntu发行版中可以直接通过包管理器直接安装预编译的Boost库:
$ sudo apt install libboost-all-dev
不过这样安装的只有头文件和动态库,分别位于/usr/include和/lib/x86_64- linux-gnu目录中。由于这些都是系统目录,即使不向编译器提供-I或-L参数,编译器也会默认在这里搜索头文件和库,非常方便。实际上,自行构建Boost库时,也可以通过./b2 install将Boost库安装到系统目录中。
在CentOS中安装预编译的Boost库
在CentOS发行版中同样可以通过包管理器安装预编译的Boost动态库:
$ sudo dnf install boost-devel
此时,安装好的头文件和动态库分别位于/usr/include和/usr/lib64系统目录中。