博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Boost库编译应用
阅读量:5795 次
发布时间:2019-06-18

本文共 2055 字,大约阅读时间需要 6 分钟。

hot3.png

  • 版本:Boost 1.66.0

Windows库编译

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

  • 环境:Windows 10 + Visual Studio 2017

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 ### %1ECHO ###ECHO ### You can specify the toolset as the argument, i.e.:ECHO ###     .\build.bat msvcECHO ###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, vc141ECHO ###ECHO ### If you have Visual Studio 2017 installed you will need either updateECHO ### the Visual Studio 2017 installer or run from VS 2017 Command PromptECHO ### 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。

转载于:https://my.oschina.net/shelllife/blog/1831864

你可能感兴趣的文章
开源运维自动化
查看>>
Centos7上安装OpenLDAP
查看>>
复杂链表的复制
查看>>
vim常用命令总结
查看>>
JQuery幻灯片-视觉效果爆棚的全屏滚动相册
查看>>
Oracle日常维护操作笔记(二)
查看>>
Java代码转换成json代码
查看>>
C++ 获取进程路径
查看>>
如何在Oracle 11g使用PL/SQL Developer工具
查看>>
cocos2dx出现 Fatal signal 11 (SIGSEGV) at 0x00000000 (code=1)
查看>>
俞敏洪的话
查看>>
linux 的ifconfig命令
查看>>
cxf整合spring配置拦截器
查看>>
正则表达式收集
查看>>
视频加密解决方案
查看>>
Win 2003中打开DirectX加速
查看>>
servlet两种跳转方式
查看>>
Android -- service 服务的创建与使用,生命周期
查看>>
python_____三级菜单
查看>>
自家用的.vimrc配置文件
查看>>