Win7+vs2010下安装boost_1_46_1库
2020-12-13 02:48
标签:style code http tar ext color 一、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(命令提示)” 4.设定编译环境(加入红色字体) # MSVC configuration 要支持mpi,你可以添加一行“using mpi
;”即可 5.cd到D:\boost\boost_1_46_1下执行 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 (这一步需要等待很长时间,大概一个小时左右……) 下面详细解释一下每个参数的含义: 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 中去填写对应路径 ) 相关: 使用举例: #include 此时,不用包含库文件,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共用一套代码,非常方便。 Win7+vs2010下安装boost_1_46_1库,搜素材,soscw.com Win7+vs2010下安装boost_1_46_1库 标签:style code http tar ext color 原文地址:http://www.cnblogs.com/lidabo/p/3782400.html
(2)cd到D:\boost\boost_1_46_1下执行bootstrap.bat,然后,会在d:\boost\boost_1_46_1\下生成bjam.exe
修改user-config.jam
(d:\boost\boost_1_46_1\tools\build\v2\user-config.jam) 的MSVC configuration
# Configure msvc (default version, searched in
standard location # and PATH).
# using msvc ;
using
msvc : 10.0 : :
编译boost库命令:
stage/install:stage
表示只生成库(dll和lib),install还会生成包含头文件的include目录。推荐使用stage,因为install生成的这个include目录实际就是boost安装包解压缩后的boost目录,所以可以直接使用,而且不同的IDE都可以使用同一套头文件,这样既节省编译时间,也节省硬盘空间。
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