windows 下编译64位的 Boost 1. 61. 0

来源:互联网 发布:weka 数据预处理class 编辑:程序博客网 时间:2024/06/10 03:50

参考:http://blog.csdn.net/kimfeng/article/details/52850083

一直以来都是在Win32环境下Build和使用boost,但现在基本上每天都在64位Win7下工作,所以很有必要把这几天的经验总结下来。

1. 下载并解压boost 1.61.0 压缩包

2. 和32位环境不同,x64环境下编译得先从开始菜单启动Visual Studio的VS2015 x64 Native Tools Command Prompt 进入命令提示符,而不是随便打开任意一个命令行窗口就行。

3. 然后cd到boost根文件夹,运行bootstrap.bat生成x64版的b2.exe 和 bjam.exe (他们只是版本不同的产物,但是用法一致,bjam是之前版本的,b2 是最新的)

4. 然后运行命令: 


b2 --build-type=complete toolset=msvc-14.0 threading=multi link=shared address-model=64 


即可生成DLL版平台库,如果要编译静态库版就把shared改为static

  • 只生成一个库的话加上例如--with-python得编译选项,避免生成东西太多、时间太长。
  • 要有address-model=64属性,如果没有这个属性的话,会默认生成32位的平台库,加入这个选项才能生成64位的DLL。
  • 如果要生成Boost.Python库,需要先下载安装x64版的Python安装包,我用的版本是3.2.3。在使用这个库编写Python扩展DLL时,默认是使用动态库版的Boost.Python,要使用静态版的必须在C++项目中定义BOOST_PYTHON_STATIC_LIB宏,这样就不用在使用或发布扩展时带着boost_python-vc90-mt-1_50.dll一起了,当然扩展DLL的尺寸会大些,如果做实验没必要这样,编译又慢生成的文件也大。
  • vs工具链版本:vs2003 : msvc-7.1,vs2005 : msvc-8.0,vs2008 : msvc-9.0,vs2010 : msvc-10.0, vs2015:msvc-14.0
win7 vs2012/2013 编译boost 1.55
参考:http://blog.csdn.net/alex_my/article/details/17630685

经过测试,2012和2013步骤相同,这里以2012为例。


1、打开VS2012 Native Tools Command,可以从开始--Microsoft Visual Studio 2012找到:


2、进入解压后的文件夹,当前放在F盘根目录下。执行bootstrap.bat,如图红框所示:


3、编译,可以简单的使用b2 install (如果不是按照,则不需要install参数),也可以指定存放目录,或者寻找网上其它帮助文章。

     查看帮助可以输入:.\b2 --help

     比如要开启多线程编译:b2 --build-type=complete  threading=multi 

     设置生成的是debug或者release


     备注:如果是使用VS2013,请指定输出库类型,否则会缺一个lib文件:

     "无法打开文件 libboost_thread_vc120_mt_sgd-1_55.lib"。

      在2013时,我是使用下面的语句进行编译:

     // 如果要获取动态库:

     

[cpp] view plain copy
 print?
  1. b2 --toolset=msvc-12.0 --stagedir="C:\Boost\boost_vc_120" link=shared runtime-link=shared threading=multi debug release  
  

     // 如果是要获取静态库:

[cpp] view plain copy
 print?
  1. b2 --toolset=msvc-12.0 --stagedir="C:\Boost\boost_vc_120" link=static runtime-link=static threading=multi debug release  

    其中,注意修改--toolset=msvc-12.0,将12.0修改成对应的vs版本号,12.0是VS2013的版本号。

    目标地址也要修改成你所需的。

如果需要按照,则继续下面的。

     注意,不要漏了install,它会帮你把头文件集合到一个文件夹中。


   编译过程有一个复制过程,本次编译过程中,会在C盘根目录下生成一个boost文件夹,然后包含
include和lib文件夹,这就是我们将要使用的头文件和库文件。省去了各种老教程中需要自己搜索库
文件的步骤,本次编译比较长,或许你的机子很棒,编的很快。


4、编译完了我们就使用编译在C盘中的文件。我将它们拷贝到了F盘,然后建立了一个工程测试。
   在F盘根目录下建立一个BoostTest工程用来测试。下图三个文件分别是:
   1) 将要使用的boost头文件和库文件。
   2) 解压出的boost文件夹,就是使用这个文件夹来进行 1 -- 3步骤的。
    3) 测试工程。


5、在BoostTest中,删除了原来的文件,建立了一个main.cpp。
例子是网上搬来的:
http://blog.csdn.net/zengraoli/article/details/8870446
需要简单的配置两个地方:


这里使用绝对路径,也可以配置环境来使用。



以下这篇文章讲述三个boost智能指针的使用,一步步简洁明了。

http://blog.csdn.net/alex_my/article/details/17636561