在Visual Studio 2013上编译boost 1.55并生成libboost_thread
2014-05-18 16:25
627 查看
转自:
http://srcflow.info/visual-studio-2013boost-155.html#.U3hFjsQW071
在Visual Studio 2013(msvc12)上编译boost 1.55确实不是很容易。网上的教程大多过于陈旧,还有几个与VS不兼容的问题还没有修复。这篇文章总结了如何编译安装64位版本的boost 1.55 beta 1、修复一些小Bug,以及如何设置Visual Studio进行boost开发。其中某些不兼容问题在1.54版本中依然存在,同样可以用本文中的方法解决。
下载地址在这里 下载7z比较小,实测在Windows上使用完全没有问题。另外需要注意的是,某些编译程序对中文的支持不完全,解压路径里不要含有中文。
其实也不能算是编译工具啦,只是一个静态版的Makefile。 首先打开命令提示符,需要注意的是,如果boost解压在系统目录(如Program Files目录),打开命令提示符必须选择以管理员身份打开。比较简单的方法是按Win+x键。在弹出的菜单里选“命令提示符(管理员)”。 然后,切换到boost解压到的目录。输入命令bootstrap.bat回车。大概一两分钟的样子就可以生成出b2和bjam两个可执行文件。
在我的编译过程中出现了一下几个错误,各位可以在编译之前先修改源代码,避免走弯路。两个Bug的ticket在这里和这里。
简单来说,需要修改的文件包括boost/mpl/assert.hpp和boost/archive/iterators/transform_width.hpp。其中 boost/mpl/assert.hpp, line 137:
改为
boost/archive/iterators/transform_width.hpp 最开始增加
用下面的命令开始编译boost
j4命令可以打开4线程并行编译(跟make一样~)。 根据自己的应用特点可以编译特定的变种。比如如果只需要编译64位版本,就需要在参数中增加address-model=64。根据我自己的需要,我选择了只编译64位release库,4进程并行编译。具体命令是
其中-q表示如果出现错误立即停止,这样有利于提早发现并解决boost中的Bug。 编译,根据计算机的速度,可能会消耗10-40分钟不等的时间。
打开需要使用Boost的项目,选择项目->XX(你的项目名)属性,在平台中选择正确的平台(如果是64位系统需要选择x64),选择正确的配置(如果使用release版本的库则选择Release)。在左侧的树状图中选择配置属性->VC++目录。添加包含目录和库目录。假设boost解压完成的根目录为%boostRoot%(在我这里是D:\Program Files\boost\boost_1_55_0b1),则包含目录应该添加%boostRoot%,而库目录应该添加%boostRoot%\stage\lib。 完成设置后可以用以下程序来测试设置是否正确
=====================================================================
svn地址:http://svn.boost.org/svn/boost/trunk/
从svn上下载最新代码(当前2014.5.18版本号86799),未修改代码直接编译。
按上述方法修改编译命令:
b2 -q address-model=32 toolset=msvc threading=multi variant=debug -j4
编译结束后,配置好VS2013环境,新建工程并输入文中代码,生成工程时提示:
LINK : fatal error LNK1104: 无法打开文件“libboost_thread-vc120-mt-gd-1_55.lib”
原因:boost中的大部分内容都可以通过直接引用源代码使用,而thread则需要先编译出对应的库,而使用以上编译选项并没有生成thread相关的库。
使用以下命令单独生成thread库:
bjam --toolset=msvc --with-thread
http://srcflow.info/visual-studio-2013boost-155.html#.U3hFjsQW071
在Visual Studio 2013(msvc12)上编译boost 1.55确实不是很容易。网上的教程大多过于陈旧,还有几个与VS不兼容的问题还没有修复。这篇文章总结了如何编译安装64位版本的boost 1.55 beta 1、修复一些小Bug,以及如何设置Visual Studio进行boost开发。其中某些不兼容问题在1.54版本中依然存在,同样可以用本文中的方法解决。
下载boost
下载地址在这里 下载7z比较小,实测在Windows上使用完全没有问题。另外需要注意的是,某些编译程序对中文的支持不完全,解压路径里不要含有中文。
生成编译工具
其实也不能算是编译工具啦,只是一个静态版的Makefile。 首先打开命令提示符,需要注意的是,如果boost解压在系统目录(如Program Files目录),打开命令提示符必须选择以管理员身份打开。比较简单的方法是按Win+x键。在弹出的菜单里选“命令提示符(管理员)”。 然后,切换到boost解压到的目录。输入命令bootstrap.bat回车。大概一两分钟的样子就可以生成出b2和bjam两个可执行文件。
一点修改
在我的编译过程中出现了一下几个错误,各位可以在编译之前先修改源代码,避免走弯路。两个Bug的ticket在这里和这里。简单来说,需要修改的文件包括boost/mpl/assert.hpp和boost/archive/iterators/transform_width.hpp。其中 boost/mpl/assert.hpp, line 137:
#if BOOST_WORKAROUND(BOOST_MSVC, >= 1700)
改为
#if BOOST_WORKAROUND(BOOST_MSVC, == 1700)
boost/archive/iterators/transform_width.hpp 最开始增加
#include<algorithm>
开始编译boost
用下面的命令开始编译boostb2 -j4
j4命令可以打开4线程并行编译(跟make一样~)。 根据自己的应用特点可以编译特定的变种。比如如果只需要编译64位版本,就需要在参数中增加address-model=64。根据我自己的需要,我选择了只编译64位release库,4进程并行编译。具体命令是
b2 -q address-model=64 toolset=msvc variant=release -j4
其中-q表示如果出现错误立即停止,这样有利于提早发现并解决boost中的Bug。 编译,根据计算机的速度,可能会消耗10-40分钟不等的时间。
设置Visual Studio(VC)项目
打开需要使用Boost的项目,选择项目->XX(你的项目名)属性,在平台中选择正确的平台(如果是64位系统需要选择x64),选择正确的配置(如果使用release版本的库则选择Release)。在左侧的树状图中选择配置属性->VC++目录。添加包含目录和库目录。假设boost解压完成的根目录为%boostRoot%(在我这里是D:\Program Files\boost\boost_1_55_0b1),则包含目录应该添加%boostRoot%,而库目录应该添加%boostRoot%\stage\lib。 完成设置后可以用以下程序来测试设置是否正确#include <boost/thread/thread.hpp> #include <iostream> void hello() { std::cout <<"Hello world, I'm a thread!" << std::endl; } int main(int argc, char* argv[]) { boost::thread thrd(&hello); thrd.join(); return 0; }
=====================================================================
svn地址:http://svn.boost.org/svn/boost/trunk/
从svn上下载最新代码(当前2014.5.18版本号86799),未修改代码直接编译。
按上述方法修改编译命令:
b2 -q address-model=32 toolset=msvc threading=multi variant=debug -j4
编译结束后,配置好VS2013环境,新建工程并输入文中代码,生成工程时提示:
LINK : fatal error LNK1104: 无法打开文件“libboost_thread-vc120-mt-gd-1_55.lib”
原因:boost中的大部分内容都可以通过直接引用源代码使用,而thread则需要先编译出对应的库,而使用以上编译选项并没有生成thread相关的库。
使用以下命令单独生成thread库:
bjam --toolset=msvc --with-thread
相关文章推荐
- 新手,Visual Studio 2013 配置Boost库。 如何编译和选择,遇到无法打开文件“libboost_thread-vc120-mt-gd-1_58.lib的解决办法
- 在Visual Studio 2013上编译boost 1.55
- Visual Studio 2013 配置Boost库。 如何编译和选择,遇到无法打开文件“libboost_thread-vc120-mt-gd-1_58.lib的解决办法
- Visual Studio 2013 配置Boost库。 如何编译和选择,遇到无法打开文件“libboost_thread-vc120-mt-gd-1_58.lib的解决办法
- 在Visual Studio 2013上编译boost 1.55
- 新手,Visual Studio 2015 配置Boost库,如何编译和选择,遇到无法打开文件“libboost_thread-vc140-mt-gd-1_63.lib“的解决办法
- Visual Studio 2013编译boost_1_55_0成功
- Linux下编译boost库生成 libboost_thread-mt.a 的方法
- boost 库的下载和编译_Visual Studio 2013(转)
- Visual Studio 2013 编译 boost-1_56_0_b1
- Linux下编译boost库生成 libboost_thread-mt.a 的方法
- Linux下编译boost库生成 libboost_thread-mt.a 的方法
- 解决ubuntu14.04编译boost1.5.4没有thread库生成
- VS2013编译安装Boost1.55
- 在Windows 7 上为VS2012编译boost 1.55 64位库
- mpi编译Boost生成so文件出错:failed gcc.link.dll解决方法
- 用clang3.4编译boost1.55
- VS2013编译boost1.55.0 serialization库错误解决办法
- windows 下编译 Boost 1.50 + Visual Studio 2008
- win7 vs2012/2013 编译boost 1.55