【C++】 Boost 库编译技巧总结
【fishing-pan:https://blog.csdn.net/u013921430转载请注明出处】
前言
这是很早之前的一个工作了,当时需要修改和重新编译其他实验室的软件的源码,所以需要自己编译Boost。因此对于如何编译Boost一点简单了解,这里分享给大家。(我自己没有使用它做开发哦!如果开发方面的求助,我就爱莫能助了!)
软件工具:VS2013+boost 1.59.0+Win7(X64)
1. 定义
Boost库是为C++语言标准库提供扩展的一些C++程序库的总称,由Boost社区组织开发、维护。(来自百度百科“Boost库”的内容)
2. 编译工具
在这里,我是采用VS2013进行编译的。因为我需要的是X64位的环境下编译程序,所以需要X64位的Boost库,我们使用X64兼容工具命令提示编译。如果编译32位的库,则采用X86本机工具命令提示编译。
3. 编译过程
我把解压后的文件夹放在了F盘下,我所下载的库版本为1_59_0;首先我们进入Boost的目录,执行bootstrap.bat。
这一步执行完成后,会在boost根目录生成 b2.exe 、bjam.exe 、project-config.jam 、bootstrap.log四个文件。其中,b2.exe 、bjam.exe 这两个exe作用是一样的,bjam.exe 是老版本,b2是bjam的升级版本。接下来,就是输入编译指令。我的编译指令如下;
bjam installstage --toolset=msvc-12.0-agedir="C:\Boost\boost_vc_120"link=shared runtime-link=shared threading=multi debug release address-model=64
(1) bjam是指采用的编译程序是bjam,也可以是b2。Install stage是指编译之后的内容即产生(install)头文件,也产生(stage)库文件。只选择stage就只生成库(静态库及动态库),选择install就还会生成包含目录(include)。
(2) toolset是用来指定编译器,可选的如borland、gcc、msvc(VC6)、msvc-9.0(VS2008),msvc-11.0(VS2012)等。这里的msvc-12.0是VS2013。
(3) agedir="C:\Boost\boost_vc_120"是指定生成文件的存放路径。
(4) link=shared;生成动态链接库/静态链接库。生成动态链接库需使用shared方式,生成静态链接库需使用static方式。这里决定了生成的库的是静态的还是动态的库。
(5) runtime-link=shared;动态/静态链接C/C++运行时库。这里可以认为是生成的库需要怎样去链接,是动态的链接还是静态的链接。详细的举例如下表;
序号 |
link |
runtime-link |
生成库 |
1 |
static |
static |
libboost_date_time-vc120-mt-sgd-1_59.lib libboost_date_time-vc120-mt-s-1_59.lib |
2 |
static |
shared |
libboost_date_time-vc120-mt-gd-1_59.lib libboost_date_time-vc120-mt-1_59.lib |
3 |
shared |
shared |
boost_date_time-vc120-mt-gd-1_59.dll boost_date_time-vc120-mt-gd-1_59.lib boost_date_time-vc120-mt-1_59.dll boost_date_time-vc120-mt-1_59.lib |
4 |
shared |
static |
报错,无法编译 |
可以看到link时是否使用“shared”决定了是否产生动态库,而runtime-link决定boost链接系统运行时链接库的方式,静态链接或者动态链接。与之对应的就是如下图中显示的,是选择Multithreaded 还是选择Multithreaded DLL 方式运行库。
(6) threading,单/多线程编译。如果需要编写多线程程序,要指定multi方式;如果需要编写单线程程序,则使用single方式。这里一般选择多线程。
(7) debug release,指定生成的库的debug\release版本。其中
libboost_date_time-vc120-mt-sgd-1_59.lib
libboost_date_time-vc120-mt-s-1_59.lib
上面的有gd为debug版本,下面没有gd的为release版本。
(8) address-model=64,是生成X64位的库需要的指令。
4.编译结果
编译完成后,除了指定路径会生成Boost库和头文件外,在C盘根目录中也会直接生成一个Boost的文件夹,其中也会包含库和头文件。其实头文件不需要单独编译,因为在解压下载下来的包之后,就已经有了头文件,为了节约时,直接复制使用即可;
5.后续处理
后面的工作只需要把库的路径添加到程序的“附加库目录”,把所需的库的名字加入“附加依赖项”即可。
已完。。
【C++】 Boost 库编译技巧总结相关推荐
- Boost库编译安装
一.Boost库介绍 Boost库是一个经过千锤百炼.可移植.提供源代码的C++库,作为标准库的后备,是C++标准化进程的发动机之一.Boost库由C++标准委员会库工作组成员发起,其中有些内容有望成 ...
- boost库编译安装以及Qt导入
1.下载boost安装包 https://www.boost.org/ 2.解压后进行编译安装 bootstrap .\b2 3.在qt中引用boost库 引用头文件 INCLUDEPATH += D ...
- Boost库编译指南
1. Boost 库简介 Boost 是一个开源的 C++ 库集合,提供了许多高质量的库,涵盖了许多不同的领域,如智能指针.多线程编程.正则表达式.数学库等等.Boost 的目标是提高 C++ 程序员 ...
- Ubuntu16.04--poco和boost库编译和安装
poco 法1: 如果有版本的需求则不推荐 sudo apt-get install libpoco-dev # 也可利用新立德软件管理包安装 法2:编译poco源码(推荐) 官网下载:https:/ ...
- linux下boost库编译
编译指定库:例(libboost_thread.so) ./bootstrap.sh --with-libraries=thread ./b2 编译全部库 ./bootstrap.sh ./b2 默认 ...
- VS2013引入boost库编译时出现'QueueUserAPC' : is not a member of '`global namespace'
错误描述: boost/asio/detail/impl/win_thread.ipp(52): error C2039: 'QueueUserAPC' : is not a member of '` ...
- 手把手教你:解决boost库编译使用后thread类使用报错的方法
报错如下: libboost_thread-vc110-mt-1_53.lib(thread.obj) : error LNK2038.... error LNK2038: 检测到"_ITE ...
- Ubuntu boost库文件安装编译
简单介绍 Boost库是为C++语言标准库提供扩展的一些C++程序库的总称,由Boost社区组织开发.维护. Boost向来有准标准库之称,很多新特性例如智能指针等都是先在boost中实现,后来被吸收 ...
- vs2017编译boost库 ,解决无法打开文件“libboost_filesystem-vc140-mt-1_58.lib” 问题
注:本文为工作问题记录,有些还未搞清楚原理,请见谅. 借鉴了网上分享的资料,感谢. 错误 LNK1104 无法打开文件"libboost_filesystem-vc140-mt-1_58.l ...
最新文章
- 递归/回溯:Subsets II求子集(有重复元素)
- 第三周项目三-输出星号图(1)
- Python3 正则表达式特殊符号及用法(详细列表)
- css有些效果不显示,css导入成功但没有效果怎么办
- 【虾说区块链】入门区块链,先学分布式系统!一文说明分布式系统与区块链的关系...
- tcp文件服务器设计报告,TCPIP协议分析课程设计报告书.doc
- CANOpen服务数据对象报文
- Java 总结finalize()方法
- Java反射机制获取系统@Hide属性
- java day23【函数式接口】
- 世界三大统计分析软件sas splus spss
- C语言实现英文句子单词提取并分离
- cdr怎么算曲线周长_cdr怎么计算图形的周长和面积? cdr图形计算长度和面积的技巧...
- 微信文件没下载过期了
- 脱机使用打印机是什么意思?
- QT之鼠标点击事件学习
- 专升本第九讲 (WORD+PPT)
- dell服务器设置CPU高性能,DellR720服务器提示cpu1 internal error (IERR)
- 后端开发——Java
- 数据库PostrageSQL-证书认证