文档章节

Boost库编译应用

水海云
 水海云
发布于 06/19 10:35
字数 603
阅读 58
收藏 0
  • 版本:Boost 1.66.0

Windows库编译

官网指南:直接执行bootstrap.bat处理文件即可,可以我却遇到一堆的问题。

  • 环境:Windows 10 + Visual Studio 2017

Boost编译出来库命名

boost库生成文件命名和编译

BOOST_LIB_PREFIX + BOOST_LIB_NAME + "-" + BOOST_LIB_TOOLSET + "-" + BOOST_LIB_THREAD_OPT + "-" + BOOST_LIB_RT_OPT + "-" + BOOST_LIB_VERSION

这些定义为:

  BOOST_LIB_PREFIX: 静态库为 "lib" (否则无,是用动态链接库)

  BOOST_LIB_NAME: 库的基本名称 ( 比方说 boost_regex).

  BOOST_LIB_TOOLSET: 编译工具集名称 ( 比如:vc6, vc7, bcb5 )

  BOOST_LIB_THREAD_OPT: 多线程为 "-mt" ,否则为空

  BOOST_LIB_RT_OPT: 指示使用的运行库的后缀,

组合下面的一个或者更多字符:

s 静态运行库,指的是静态链接到运行时库(不出现表示动态).

g 调试/诊断 runtime (release if not present).

d 调试版本 (不出现表示 release 版 ).

p STLPort 版本.

注:对 vc 来说,gd 总是一起出现

  BOOST_LIB_VERSION: Boost 版本, Boost 版本 x.y 表示为 x_y形式.

编译命令:

.\b2.exe -j8 --with-filesystem threading=multi link=static runtime-link=shared stage

错误列表

  • cl 命令无法识别:编译器命令不能识别

  • 头文件找不到:

      boost_1_66_0\tools\build\src\engine\jam.h(71): fatal error C1034: ctype.h: no include path set
    

解决方法:通过跟踪bootstrap.bat文件到tools\build\src\engine\build.bat文件,发现如下内容:

ECHO ###
ECHO ### %1
ECHO ###
ECHO ### You can specify the toolset as the argument, i.e.:
ECHO ###     .\build.bat msvc
ECHO ###
ECHO ### Toolsets supported by this script are: borland, como, gcc,
ECHO ###     gcc-nocygwin, intel-win32, metrowerks, mingw, msvc, vc7, vc8,
ECHO ###     vc9, vc10, vc11, vc12, vc14, vc141
ECHO ###
ECHO ### If you have Visual Studio 2017 installed you will need either update
ECHO ### the Visual Studio 2017 installer or run from VS 2017 Command Prompt
ECHO ### as we where unable to detect your toolset installation.
ECHO ###

即要从VS2017的命令行工具中去运行才能找到正确的环境配置。

在菜单Visual Studio 2017目录下找到:x86 Native Tools Command Prompt for VS2017打开,然后切换到Boost目录执行:

call .\bootstrap.bat

将会生成文件:b2.exe bjam.exe两个文件。可以执行如下命令查看说明:

.\b2.exe --help

通过如下命令安装boost:

.\b2.exe link=static runtime-link=static install

默认安装到C:\Boost目录下,大小约1.8GB。

Boost的使用

  1. 库链接问题:带lib前缀的库和不带lib前缀的库

    在编译使用Caffe框架的应用时,遇到如下链接错误:

     无法打开文件“libboost_date_time-vc-141-mt-1_61.lib”
    

    可是在指定的目录下我们有不带lib前缀的库:boost_date_time-vc-141-mt-1_61.lib。

    解决方法是添加Boost的库链接宏: BOOST_ALL_NO_LIB。

© 著作权归作者所有

共有 人打赏支持
水海云
粉丝 50
博文 120
码字总数 101938
作品 0
深圳
程序员
私信 提问
正则表达式 boost regexp的安装

正则表达式 boost regexp的安装 早就听说过这个Boost库的牛B,只是一直没有精力来学习,最近在网上查了查,评论有好有坏,但多一点是好的,不过暂时没有见过有公司使用Boost库来作为公司产品...

香芋
2012/06/08
0
0
正则表达式 boost regexp的安装

正则表达式 boost regexp的安装 早就听说过这个Boost库的牛B,只是一直没有精力来学习,最近在网上查了查,评论有好有坏,但多一点是好的,不过暂时没有见过有公司使用Boost库来作为公司产品...

香芋
2012/06/08
0
0
QuantLIb C++金融工程库初体验

版权声明:原创文章如需转载,请在左侧博主描述栏目扫码联系我并取得授权,谢谢 https://blog.csdn.net/u012234115/article/details/81194675 QuantLib是一个有名的金融计算的C++库,能方便地...

踏莎行hyx
07/25
0
0
UBUNTU16.10安装Boost1.6

最近由于编译一个程序用到了C++的boost库,所以便安装了这个库。但是,其中遇到了一些小问题。所以记录下来,以供别人参考。 首先说一下我的环境:Ubuntu 16.10 64bit, gcc version 6.2.0 其...

rose_willow
2016/11/22
79
0
怎样在 VS 2010 中使用 Boost [翻译]

翻译来自 stackoverflow 的讨论 How to use Boost in Visual Studio 2010 译文:怎样在 VS 2010 中使用 Boost [翻译] 作者:KTC 翻译:Breaker 译文: 我说明下在 VS 2010 中编译 Boost 的特...

晨曦之光
2012/05/23
479
0

没有更多内容

加载失败,请刷新页面

加载更多

SpringBoot源码:启动过程分析(二)

接着上篇继续分析 SpringBoot 的启动过程。 SpringBoot的版本为:2.1.0 release,最新版本。 一.时序图 一样的,我们先把时序图贴上来,方便理解: 二.源码分析 回顾一下,前面我们分析到了下...

Jacktanger
昨天
0
0
Apache防盗链配置,Directory访问控制,FilesMatch进行访问控制

防盗链配置 通过限制referer来实现防盗链的功能 配置前,使用curl -e 指定referer [root@test-a test-webroot]# curl -e "http://www.test.com/1.html" -x127.0.0.1:80 "www.test.com/1.jpg......

野雪球
昨天
2
0
RxJava threading

因为Rx针对异步系统设计,并且Rx也自然支持多线程,所以新的Rx开发人员有时会假设Rx默认是多线程的。在其他任何事情之前,重要的是澄清Rx默认是单线程的。 除非另有说明,否则每次调用onNex...

woshixin
昨天
0
0
Python的安装及文件类型、变量

一、为什么学习python 服务于大数据、人工智能、自动化运维。 简单易学 代码简洁 薪资高 近几年越来越火 二、Python的安装 linux 系统默认安装, CentOS7 默认安装了python2.7 安装ipython y...

枫叶云
昨天
1
0
JeeSite 4.x 树形结构的表设计和用法

有些同仁对于 JeeSite 4 中的树表设计不太了解,本应简单的方法就可实现,却写了很多复杂的语句和代码,所以有了这篇文章。 在 JeeSite 4 中的树表设计我还是相对满意的,这种设计比较容易理...

ThinkGem
昨天
28
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部