现在的位置: 首页 > 自动控制 > 工业·编程 > 正文

windows和linux下boost库的安装和使用

2019-11-19 10:59 工业·编程 ⁄ 共 1935字 ⁄ 字号 暂无评论

boost库是每一个C++程序员都应该学会使用的库,也是C++开发中少不了的库,这个库被称为C++的准标准库,很多C++的新标准都是从这个库里面扣出来的。在C++沉沦的十年中,是这个库一直给C++注入蓬勃的生机!紧跟boost库的发展可以说就是在跟进C++标准的发展。

一、下载安装

1、官网下载

下载地址:https://www.boost.org/users/download/
进入下载页面可以看到很多信息:包括boost最新版本、有关boost的说明文档、历史版本等等,见下面截图中的标注说明。
wps1

2、将下载好的boost安装包解压安装

运行文件夹里面的bootstrap.bat脚本,会生成一个b2.exe可执行文件,如果直接运行b2.exe程序,会在当前文件夹下创建两个文件夹:stage和bin.v2,默认生成静态库,包括发布版Release和调试版Debug,文件中含有gd的是调试版库,生成的静态库在stage文件夹下,bin.v2下是一些中间文件。
wps2
默认生成的静态库有32位和64位
wps3

二、动态库和静态库全部生成的方法

使用上面的方法只能生成静态库,静态库和动态库同时生成,需要使用boost自己提供的命令进行配置生成。

1、查看b2的帮助命令

在终端输入命令:.\b2 --help,会列出许多命令配置参数,如下图中所示,可以根据自己的需要进行配置参数。
wps4

2、配置参数

这里配置完全生成动态库和静调库,指定使用VS2017进行编译,并指定生成的目录,命令是:.\b2 --build-type=complete install stage --toolset=msvc-14.1 --stagedir=“D:\InstallThirdLib\BoostLib\VS2017Lib”,具体指令说明如图所示。
wps5

输入上面的命令,点击回车之后,就是漫长的等待过程,因为这里采用完全编译,能编译的编译器会全部编译,有些库的编译会依赖其他第三方库,电脑没有安装依赖库的话,会自动跳过编译。

3、查看编译后的文件

执行上面的命令后,会自动在你指定的文件夹下面创建一个lib库,里面就是编译好的静态库和动态库,这里静态库和动态库32位和64位都会生成,这里默认生成的包括发布版Release库和调试版Debug。
wps6

4、仅生成调试版静态库或者动态库

在步骤3中我没有设置生成发布版和调试版的参数,默认全部生成,这里增加一个参数variant,可以控制生成Debug版或者Release版的库。仅生成debug版命令如下:
.\b2 --build-type=complete install stage --toolset=msvc-14.1 --stagedir=“D:\InstallThirdLib\BoostLib\VS2017Lib” variant=debug

仅生成Release版的话,把variant=debug改成variant=release即可。
这里不再单独演示,这种需求也不多,大部分情况下大家都会两种版本都生成。

5、定制生成某个库

仅需要生成某个库或者不需要生成某个库时,可以配置命令参数with或者without。
wps7
例如仅生成时间的库配置命令如下:
.\b2 --with-data_time --build-type=complete install stage --toolset=msvc-14.1 --stagedir=“D:\InstallThirdLib\BoostLib\VS2017Lib”

三、Linux下安装boost库

linux下安装boost库的命令参数和windows下的参数配置基本一样的。解压boost库后,需要执行文件bootstrap.sh文件,会生成一个可执行文件b2,命令参数使用情况和windows下的一样,不再详述,生成的库一般默认在/usr/local/lib下面。
wps8

四、代码测试

这里使用VS2017测试,linux下面不再写测试代码,代码写的简单些,仅供测试使用。
#include
#include <boost/algorithm/string.hpp>
using namespace std;
using namespace boost;

int main()
{
cout << “------------测试boost库安装是否正确------------” << endl;
std::string s = “ismileli”;
// 把字符串小写转换为大写
std::cout << boost::algorithm::to_upper_copy(s) << std::endl;
std::cout << “Hello World!\n”;
getchar();
}
运行结果:

wps9
能力有限,如有错误,多多指教!

作者:ISmileLi

给我留言

留言无头像?