文档章节

Boost库编译应用

水海云
 水海云
发布于 06/19 10:35
字数 603
阅读 36
收藏 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
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
Linux平台Boost的编译方法

本博客(http://blog.csdn.net/livelylittlefish )贴出作 者(三二一@小鱼)相关研究、学习内容所做的笔记,欢迎广大朋友指正! Linux平台Boost的编译方法 Boost的编译使用的不是已经成为公...

晨曦之光
2012/03/09
300
0

没有更多内容

加载失败,请刷新页面

加载更多

TypeScript基础入门之高级类型的多态的 this类型

转发 TypeScript基础入门之高级类型的多态的 this类型 高级类型 多态的this类型 多态的this类型表示的是某个包含类或接口的子类型。 这被称做F-bounded多态性。 它能很容易的表现连贯接口间的...

durban
29分钟前
0
0
tomcat中的几种log catalina localhost

体会 catalina.out catalina.log 是tomcat的标准输出(stdout)和标准出错(stderr) cataliana.{yyyy-MM-dd}.log和localhost.{yyyy-MM-dd}.log 是通过logging.properties配置的tomcat自己运行的......

onedotdot
50分钟前
1
0
Oracle return exit continue

常在循环体中看到下面3种语句: return exit continue 举例说明 啥都没有 -- none begin for i in 1 .. 10 loop if i < 5 then dbms_output.put_line('i < 5, i = ' || to_char......

taadis
今天
3
0
JSONObject 转换时出错 InvocationTargetException

JSONObject 转换时出错java.lang.reflect.InvocationTargetException 一时看不出来是什么问题。 挺奇怪的。 百度参考了一下这个 网页的解决方案 说是类型不对,空? 仔细查看代码,果然是有一...

之渊
今天
3
0
no such module 'pop'问题

在github上 clone 了一个 swift 项目,编译时提示"no such module 'POP'"错误,查了一下居然是因为podfile中指定的最低版本是iOS 11.0,大于我测试手机的iOS版本10.3.3,将Podfile中的最低版...

yoyoso
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部