【C++】 Boost 库编译技巧总结

 

fishing-panhttps://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,也可以是b2Install 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-s gd-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.后续处理

     后面的工作只需要把库的路径添加到程序的“附加库目录”,把所需的库的名字加入“附加依赖项”即可。

 

已完。。

 

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值