分享

Windows 7(64位)下通过vs2010完整安装boost 1.46.1(32位/6...

 londonKu 2012-03-28

最新的boost库已经发布了1.46.1版本,但是我接触的比较晚,去年才开始接触并使用,第一次使用的是1.43版本,而且当时安装的时候没有进行完全安装(未包含mpi及python,只涉及32位版本)。这几天重新研究了一下完整安装问题,以下针对Windows 7系统(64位)下通过vs2010完整安装boost 1.46.1(32位/64位)进行详细描述。

        完整安装boost,需要涉及几个第三方库:

        1)Regex所需要的Unicode支持类库---ICU。由于自己是使用C/C++,所以需要icu4c。

        2)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 = "你的路径")。

        3)Python所需要的Python语言库---Python

        以下先分步描述相关第三库的安装过程:

        1)ICU4C

             a)当前icu4c最高版本为4.8,下载的源代码包为icu4c-4_8-src.tgz(个人偏向于通过源代码编译生成,这样会更灵活,比如有问题时可以调试);

             b)解压icu4c-4_8-src.tgz文件,进入icu\source\allinone子目录,用vs2010打开allinone.sln解决方案;

             c)分别按照Win32(32位程序)/x64(64位程序)下的Debug/Release模式进行编译,其Win32的Debug/Release库文件保存于icu\lib目录,x64的Debug/Release库文件保存于icu\lib64目录。需要注意的是:生成相应的Debug/Release库文件后,需要将相应的lib/lib64目录下.dll及.lib文件备份出来,避免编译下一Release/Debug版本时被覆盖;

             d)将编译后的Win32/x64的Debug/Release文件(.lib及.dll文件)依次保存好(比如x86/x64目录下的debug/release子目录),并在x86/x64目录下的debug/release子目录下新建include目录,并将icu4c的头文件依次拷贝一份到对应的include目录中(后面编译boost时需要)。

        2)MPI

              最最简单的方式,直接进入前述地址下载安装即可。

        3)Python

             当前Python最高版本为3.2,从3.2版本开始有了Windows的安装包(安装后直接有了相应的头文件、库文件等,无需经由代码编译)。在这里要说声抱歉,直接经由代码编译有很多问题,总是编译不过,所以暂时使用安装包,待后面代码编译通过后再使用代码包。(注意,编译32位boost程序时安装32位的python,编译完成后再卸载,然后再安装64位的python,继续进行64位boost的编译,反之亦然)

        至此,安装boost所需要的相关第三方库已经准备完成,现在正式开始boost 1.46.1的安装过程:

        1)通过boost网站下载最新的boost源代码包boost_1_46_1.tar.gz并解压;

        2)用UltraEdit打开boost_1_46_1\boost_1_46_1\tools\build\v2目录下的user-config.jam文件,并在最后增加两行“using mpi ;”(注意,mpi与;之间有一个空格)、“using python : 3.2 : c:\\python32 ;”(注意,3.2与;之间有一个空格,另外,3.2为python的版本号(只需要主版本号与次版本号),c:\\python32为python的安装目录,windows下需要将路径的\符号转换为\\)

        3)通过vs2010的“Visual Studio Command Prompt (2010)”(编译32位)、“Visual Studio X64 Win64 Command Prompt (2010)”(编译64位)菜单项进入vs2010命令行,并进入解压后的boost_1_46_1\boost_1_46_1目录;

        4)执行bootstrap.bat命令(只需要执行一次即可);

        5)x86/x64下的debug/release编译命令分别是:

             a)x86 debug
                  bjam --prefix=e:\build\boost\1.46.1\x86\debug stage toolset=msvc-10.0 variant=debug link=shared address-model=32 threading=multi runtime-link=shared -s ICU_PATH=E:\build\icu4c\4.8\x86\debug install

              b)x86 release
                    bjam --prefix=e:\build\boost\1.46.1\x86\release stage toolset=msvc-10.0 variant=release link=shared address-model=32 threading=multi runtime-link=shared -sICU_PATH=E:\build\icu4c\4.8\x86\release install

               c)x64 debug
                    bjam --prefix=e:\build\boost\1.46.1\x64\debug stage toolset=msvc-10.0 variant=debug link=shared address-model=64 threading=multi runtime-link=shared -sICU_PATH=E:\build\icu4c\4.8\x64\debug install

               d)x64 release
                    bjam --prefix=e:\build\boost\1.46.1\x64\release stage toolset=msvc-10.0 variant=release link=shared address-model=64 threading=multi runtime-link=shared -sICU_PATH=E:\build\icu4c\4.8\x64\release install
         6)其中,--prefix设置boost安装目录;stage表示只生成库文件(dll与lib文件);toolset指定编译器,vs2010就是msvc-10.0,vs2005/vs2008分别是msvc-8.0与msvc-9.0;variant决定编译什么版本;link决定使用静态库还是动态库,shared是动态库,static是静态库;address-model决定地址长度,即32还是64位程序;threading决定使用单线程(single)还是多线程(multi)库;runtime-link决定是静态(static)还是动态(shared)链接C/C++标准库;-s ICU_PATH设置icu4c的路径;install会生成包含头文件的include目录。

        至此,windows 7(64位)系统下使用vs2010完全编译boost 1.46.1完成(含x86/x64的debug与release版本)。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多