Win7+vs2010下安装boost_1_46_1库

一、boost库分类:

(1)不需要编译库:any、array、asio、conversion、crc、bind/mem_fn、enable_if、function、lambda、mpl、smart_ptr...

(2)需要编译的库:date_time、filesystem、function_types、graph、iostreams、math、mpi、program_options、python、regex、serialization、signals、system、test、thread、wave

二、完全编译boost将要依赖的一些官方库:

(1)Regex所需Unicode支持类库 -- ICU ,编译ICU较为简单,解开ICU包之后,在其目录下可以找到一个叫"allinone"的目录,用Visual studio或者visual studio express打开里面的allinone.sln,选择release,即可以编译完成,编译之后,将include目录和lib目录下的库文件拷贝出来,分别放在C:\icu\include和C:\icu\lib。

(2)Graph所需的XML处理类库 --Expat,下载expat-win32bin-2.0.1安装到C:\expat即可。

(3)MPI所需MPI类库 -- Boost的官方站点说需要MPICH或OpenMPI之类的支持,事实上在Windows下总是会提示需要MPIC++,你需要的是Microsoft Cluster Pack SDK,下载并默认安装在C:\ProgramFiles\Microsoft Compute Cluster Pack下。(说明:如果安装Microsoft HPC Pack 2008 SDK或Microsoft Compute ClusterPack时不是装到默认的路径下,那bjam就会抓瞎,找不到mpic++的路径,这时候可以修改一下mpi.jam(在boost_1_46_1\tools\build\v2\tools): local cluster_pack_path_native = "你的路径")

(4)Python所需Python语言库--Python,下载Python 2.7.1 Windows Installer,安装到C:\

三、编译boost库:

1.下载安装包boost_1_46_1 选择下载windows版本

2.解压缩到D:\boost目录下

3.运行bootstrap.bat

(1)从vs2010的工具菜单进入命令提示窗口(单击“开始”按钮,指向“所有程序”,指向“Microsoft Visual Studio 2010”,指向“Visual Studio tools(工具)”,然后单击“Visual Studio 2010 command prompt(命令提示)”
(2)cd到D:\boost\boost_1_46_1下执行bootstrap.bat,然后,会在d:\boost\boost_1_46_1\下生成bjam.exe

4.设定编译环境(加入红色字体)    
修改user-config.jam (d:\boost\boost_1_46_1\tools\build\v2\user-config.jam) 的MSVC configuration  

# MSVC configuration      
# Configure msvc (default version, searched in standard location # and PATH).   
# using msvc ;   
using msvc : 10.0 : : <compileflags>/wd4819 <compileflags>/D_CRT_SECURE_NO_DEPRECATE
<compileflags>/D_SCL_SECURE_NO_DEPRECATE <compileflags>/D_SECURE_SCL=0 ;

要支持mpi,你可以添加一行“using mpi ;”即可

5.cd到D:\boost\boost_1_46_1下执行 
编译boost库命令:

bjam install -s HAVE_ICU=1 -s ICU_PATH=C:\icu --toolset=msvc-10.0 --build-type=complete link=static runtime-link=static --prefix="E:\boost\boost_1_46_1" threading=multi

variant=release

(这一步需要等待很长时间,大概一个小时左右……)

下面详细解释一下每个参数的含义:
stage/install:stage 表示只生成库(dll和lib),install还会生成包含头文件的include目录。推荐使用stage,因为install生成的这个include目录实际就是boost安装包解压缩后的boost目录,所以可以直接使用,而且不同的IDE都可以使用同一套头文件,这样既节省编译时间,也节省硬盘空间。

toolset:指定编译器,可选的如borland、gcc、msvc(VC6)、msvc-10.0(VS20010)等。

without/with:选择不编译/编译哪些库,不需要的可以without掉。这可以根据各人需要选择,默认是全部编译。但是需要注意,如果选择编译python的话,是需要python语言支持的,要先下载python。

stagedir/prefix:stage 时使用stagedir,install时使用prefix,表示编译生成文件的路径。(说明:使用install时,include文件目录结构是这样的E:\boost\boost_1_46_1\include\boost_1_46_1\boost,路径很累赘,可以去掉中间一层\boost_1_46_1。不管怎样,个人觉得还是使用stage好,一方面是快,另一方面也没这么纠结的目录)

build-dir:编译生成的中间文件的路径。这个本人这里没用到,默认就在根目录下,目录名为bin.v2,等编译完成后可将这个目录全部删除(没用了),所以不需要去设置。

link:生成动态链接库/静态链接库。生成动态链接库需使用shared方式,生成静态链接库需使用static方式。一般boost库可能都是以static方式编译,因为最终发布程序带着boost的dll感觉会比较累赘。

runtime-link:动态/静态链接C/C++运行时库。同样有shared和static两种方式,这样runtime-link和link一共可以产生4种组合方式,各人可以根据自己的需要选择编译。一般link只选static的话,只需要编译2种组合即可,即link=static runtime-link=shared和link=static runtime-link=static。

threading:单/多线程编译。一般都写多线程程序,当然要指定multi方式了;如果需要编写单线程程序,那么还需要编译单线程库,可以使用single方式。

debug/release:编译debug/release版本。一般都是程序的debug版本对应库的debug版本,所以两个都编译。

 

如果不选择安装Python,两步:

(1)bjam --without-python --toolset=msvc-10.0 --build-type=complete

        --prefix="E:\boost\boost_1_46_1" install

(2)bjam --with-python --toolset=msvc-10.0 --build-type=complete

        --prefix="E:\boost\boost_1_46_1" install

6.设定vs2010环境

(注:在2010环境下这步,在项目-->右键属性-->VC++ Directories 中去填写对应路径 )   
Tools -> Options -> Projects and Solutions -> VC++ Directories   
在Library files加上E:\boost\boost_1_46_1\lib   
在Include files加上E:\boost\boost_1_46_1\include

 

 

相关:

使用举例:

  #include<boost\thread.hpp>

  此时,不用包含库文件,boost的auto-link机制将会自动帮我们包含对应的静态lib。也就是说,boost默认是以静态方式链接的,这样我们的工程属性最好也设为Multi-threaded (Debug)。如果想使用dll动态方式链接,需要预先定义宏:

  #define BOOST_ALL_DYN_LINK

  同样,此时boost也会默认帮我们包含对应的lib。如果不想使用boost提供的auto-link机制,或者对它的自动链接不太放心的话(其实大可不必担心),可以预先定义宏:

  #define BOOST_ALL_NO_LIB

  然后使用以下方法链接:

  #pragma comment(lib, "boost_thread-vc100-mt-1_46.lib")或

  #pragma comment(lib, "boost_thread-vc100-mt.lib")

  这两个lib其实是一样的,实在不明白boost编译时为什么每个库都要复制一份,难道是因为后者在升级boost版本后不用改代码?另外还有一个比较有用的宏:

  #define BOOST_LIB_DIAGNOSTIC

  它可以让VC在编译时的output窗口中输出程序具体链接了哪些boost库以及链接顺序。

  关于boost的auto-link机制,详细可以看看boost\config\auto_link.hpp里的代码,很容易可以读懂,并且值得我们学习。

  

另:Linux下编译与配置的区别:

  我的Linux与Windows使用了共享目录,将Windows下的E:\SDK目录映射成了Linux下的/mnt/hgfs/sdk目录。

  所以我的boost源文件根目录就是/mnt/hgfs/sdk/boost_1_45_0,cd进去。

  首先需要编译bjam:

  cd tools/jam

  ./build_dist.sh

我在虚拟机的Linux下编译bjam的时候最后会卡住,屏幕显示到mkdir的地方就不往下走了,不过其实这时候bajm已经编译完成。

  接下来将stage/bin.linuxx86目录下生成的bjam拷贝到boost源文件根目录boost_1_45_0下,cd进去,开始编译boost:

  ./bjam stage --toolset=gcc --with-date_time --with-thread --with-filesystem --with-program_options --stagedir="/mnt/hgfs/sdk/boost_1_45_0/bin/gcc" link=static runtime-link=static threading=multi debug release

  这些参数的意义与Windows下完全一样,只不过编译器改成gcc,其他选项根据自己的需要进行设置。

  生成的库文件就在bin/gcc/lib目录下,与vc10编译的一样,lib目录感觉是多余的,手动将库文件拷贝到gcc目录下,删掉lib目录,这属于个人喜好问题。

  然后把中间文件全部删掉,包括bin.v2目录和tools/jam/stage目录。

  关于boost库的使用,为了不用每次写makefile都把boost的头文件和库文件的路径带着,而且为了让跨平台程序公用一套代码,

  可以将boost的头文件和库文件路径加到Linux的环境变量中。打开/etc/profile,加入以下gcc环境变量:

  CPLUS_INCL?_PATH=$CPLUS_INCL?_PATH:"/mnt/hgfs/sdk/boost_1_45_0"

  export CPLUS_INCL?_PATH

  LIBRARY_PATH=$LIBRARY_PATH:"/mnt/hgfs/sdk/boost_1_45_0/bin/gcc"

  export LIBRARY_PATH

  这样就可以直接使用boost的头文件和库文件了,并且与Windows共用一套代码,非常方便。

时间: 2024-10-18 14:24:35

Win7+vs2010下安装boost_1_46_1库的相关文章

Win7系统下安装winsdk7.1失败总是出错的解决方法

  Win7系统下安装winsdk7.1失败总是出错的解决方法          具体方法如下: 1.通过上述的应用程序平台,在已安装程序中可以看到下图剪头所指的两个应用.Visual c++ 2010 x86 redistributable.Visual c++ 2010 x64 redistributable(64位windows). 2.首先,选择"Visual c++ 2010 x64 redistributable",如下图点击"卸载".进行该插件的卸载;

win7系统下安装proe 5.0的方法

  win7系统下安装proe 5.0的方法 1.将下载好的安装包打开后,复制这个文件夹MAGNiTUDE到DEF盘都可以; 2.打开MAGNiTUDE文件夹打开ptc文件复制如图号码; 3.在安装包中打开如图所示程序,记下ID号码.最小化; 4.将PTC文件中复制的号码替换为前面记下的ID号码.保存后关闭; 5.双击keygen生成license文件后最小化; 6.点击"下一步",选择"我接受"点击选择如图产品后按图操作; 7.选择"公制"下一

Win7系统下安装TTF字体文件的方法

  解决方法: 1.如果TTF文件关联程序没有出错,可直接双击TTF文件,在弹出的字体预览安装界面中,点击"安装"按钮进行字体安装. 2.字体安装成功后,"安装"按钮为灰色,直接点击关闭即可; Win7系统下安装TTF字体文件的方法介绍到这里,安装之后我们可以选择自己喜爱的字体了.

win7系统下安装office2013出现错误代码1402/1920/1406解决方法汇总

  1.安装office2013错误代码1406的解决方法: 首先启动注册表编辑器后,找到这3个键值,并尝试手动删除,如果手动删除仍然提示拒绝访问的话,可以继续下面步骤: 1.首先鼠标右击这个项目,选择权限,在弹出来的对话框中,点击"高级"按钮; 2.在弹出的高级设置对话框中,切换到"所有者"选项卡,然后选择下方的管理员账号,并点击应用,切换到所有者; 3.之后返回到权限选项卡,点击下方的添加,输入everyone,然后点击检查名称,然后确定; 4.在弹出的权限设置

Win7系统下安装Win8系统双系统的教程

在Win7系统中安装Win8双系统,其实方法比U盘安装Win8还简单,并且win7或者win8系统也不必担心哪个系统不好用,下面三聯網给大家介绍下在Win7系统中如何安装与卸载Win8双系统. 一:准备工作 1.首先要为win8系统创建一个系统盘,首先进入win7系统,进入控制面板--然后依次打开管理工具--计算机管理--单击磁盘管理, 2.然后选择一个容量比较大的磁盘,比如我们选择E盘,然后在E盘上右键选择"压缩卷",之后在"输入压缩空间量"里输入需要压缩分配新磁

Win7系统下安装xp系统教程

随着win7的发布,越来越多的选择使用win7. 毕竟,win7在界面上比xp美观的多,同时使用方面也在某些方面比xp更为实用,更为方便. 可是对于游戏 和某些应用程序的兼容性上却就不及xp了,所以越来越多的人选择配置win7和xp双系统 . 可是由於windows 操作系统的向下不兼容性,即,只能能从低级向高级,却不能反过来. 例如,可以在windows xp下安装win7,却不能在win7下直接安装xp. 因此在win7下安装xp就会出现这样那样的问题,下面,根据我的实践,详细的讲解下win

win7系统下安装配置IIS服务器的方法

熟悉的朋友会知道,IIS是一种Web服务组件,其中包括Web服务器.FTP服务器.NNTP服务器和SMTP服务器,分别用于网页浏览.文件传 输.新闻服务和邮件发送等方面,它使得在网络上发布信息成了一件很容易的事.一般Win7旗舰版中安装IIS组件,是不需要下载iis6.0的安装包的, 下面小编下面给大家详解Win7旗舰版中安装ISS组件的方法. 操作步骤: 1.熟悉在Win7旗舰版系统中打开控制面板,在打开的控制面板界面左侧选择"打开或关闭Windows功能"; 2.出现安装Windo

monoTouch开发(1):win7 + vmware下安装mac os

iPhone现在越来越火爆了,很多原本在PC上的互联网应用都纷纷推出了iPhone客户端(比如携程,新浪微博),iPhone的最佳开发环境是mac OS + iphone真机,一般情况下这个有点难满足.(想起一句网络经典语言:用钱能解决的问题都不是问题,问题是TM没钱) 但是可以在windows环境(比如win7)中,通过虚拟机安装mac os来搭建环境,下面将讲解vmware下如何安装mac os 10.6(雪豹操作系统). 1.准备工作,先到网上down下面这些软件   a. vmware7

怎样在win7系统下安装建立ADSL宽带连接

如果你懂得在xp系统下建立ADSL宽带连接,那应该在win7系统下也能轻松完成这个设置. 在win7系统建立ADSL宽带连接,需要如下几步,很简单的几个步骤,就能完成: 1.首先建立宽带连接,WIN7和XP一样,在"网络"右键属性或"IE" "连接"的Internet选项中都可以建立. 2. 3.点击网络邻居的"连接到Internet"或IE的Internet选项"添加"你便看到 4.点击 宽带(PPPoE