• 技术文章 >运维 >windows运维

    windows下关于boost 64位和32位库的编译详细介绍

    黄舟黄舟2017-06-07 09:31:35原创3674
    常用编译命令:

    cd E:\OpenSource\boost_1_63_0\boost_1_63_0

    编译32位库:

    x86环境下编译得先从开始菜单启动Visual Studio的Visual Studio 2008 Command Prompt进入命令提示符

    运行bootstrap.bat生成x86版的bjam.exe

    bjam toolset=msvc-9.0 threading=multi link=static runtime-link=static --with-regex

    编译64位库:

    x64环境下编译得先从开始菜单启动Visual Studio的Visual Studio 2008 x64 Win64 Command Prompt进入命令提示符

    运行bootstrap.bat生成x64版的bjam.exe

    bjam toolset=msvc-9.0 threading=multi link=static runtime-link=static --with-regex address-model=64

    其中,--prefix设置boost安装目录;

    stage表示只生成库文件(dll与lib文件);

    toolset指定编译器,vs2010就是msvc-10.0,vs2005/vs2008分别是msvc-8.0与msvc-9.0;

    variant决定编译什么版本debug、release;

    link决定使用静态库还是动态库,shared是动态库,static是静态库;

    address-model决定地址长度,即32还是64位程序;

    threading决定使用单线程(single)还是多线程(multi)库;

    runtime-link决定是静态(static)还是动态(shared)链接C/C++标准库;

    -s ICU_PATH设置icu4c的路径;

    install会生成包含头文件的include目录。

    理论上,本文适用于boost的各个版本,尤其是最新版本1.48.0;适用于各种C++编译器,如VC6.0(部分库不支持),VS2003,VS2005,VS2008,VS2010,V2012,gcc,arm-linux-gcc,C++ Builder等。

    先总结一下Windows系统。

    一、下载

    首先从boost官方主页最新版boost安装包,或者使用Subversion获取最新版本,地址是:http://svn.boost.org/svn/boost/trunk。本人现在一般都用svn,这样可以很方便的进行update和build,而不是每次都下载新的安装包并rebuild。

    二、安装

    如果是使用下载的安装包,那么请将boost安装包解压至本地目录,如:E:\SDK\boost;如果是用svn的,也可以将boost的代码checkout到这个目录。因为boost一部分类是需要编译成库才能使用的,所以我们还需要准备好boost专用的编译辅助工具bjam。在命令提示符(cmd.exe)中执行根目录下的bootstrap.bat,编译后的bjam.exe会自动拷贝到该目录下(bjam必须与boost-build.jam在同级目录)。

    三、编译

    接下来就是最重要的编译步骤了。需要打开命令提示符(cmd.exe)窗口并执行bjam,可以使用--help参数来查看命令帮助。这里详细讲解一下bjam的命令行参数,因为它非常重要。首先,它涉及到编程环境的搭建,你需要根据自己今后具体的使用环境来选择合适的命令行参数;其次,它影响到你的硬盘空间,完全编译的话据说在3G以上。

    使用的bjam命令如下:

    bjam stage --toolset=msvc-9.0 --without-graph
     --without-graph_parallel --without-math --without-mpi --without-python --without-serialization --without-wave --stagedir="E:\SDK\boost\bin\vc9" 
    link=static runtime-link=shared runtime-link=static threading=multi debug release

    下面详细解释一下每个参数的含义:

    stage/installstage表示只生成库(dll和lib),install还会生成包含头文件的include目录。本人推荐使用stage,因为install生成的这个include目录实际就是boost安装包解压缩后的boost目录(E:\SDK\boost\boost,只比include目录多几个非hpp文件,都很小),所以可以直接使用,而且不同的IDE都可以使用同一套头文件,这样既节省编译时间,也节省硬盘空间。

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

    without/with选择不编译/编译哪些库。因为python、mpi等库我都用不着,所以排除之。还有wave、graph、math、regex、test、program_options、serialization、signals这几个库编出的静态lib都非常大,所以不需要的也可以without掉。这可以根据各人需要进行选择,默认是全部编译。但是需要注意,如果选择编译python的话,是需要python语言支持的,应该到python官方主页下载安装。查看boost包含库的命令是bjam --show-libraries。

    stagedir/prefixstage时使用stagedir,install时使用prefix,表示编译生成文件的路径。推荐给不同的IDE指定不同的目录,如VS2008对应的是E:\SDK\boost\bin\vc9,VC6对应的是E:\SDK\boost\bin\vc6,否则都生成到一个目录下面,难以管理。如果使用了install参数,那么还将生成头文件目录,vc9对应的就是E:\SDK\boost\bin\vc9\include\boost-1_46\boost,vc6类似(光这路径都这样累赘,还是使用stage好)。

    build-dir编译生成的中间文件的路径。这个本人这里没用到,默认就在根目录(E:\SDK\boost)下,目录名为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版本,所以两个都编译。

    本人按以上方式分别编译了静态链接和动态链接两个版本后,整个E:\SDK\boost目录有1.28G。如果不打算将来再升级boost版本,那么可以将编译生成的中间文件bin.v2目录删除,这样整个目录(包括安装包解压缩文件和编译生成的库文件)会减小至不到800MB,如果runtime-link只选了一种方式,那么整个目录只有600MB。事实上编译完成后除了boost和bin目录之外其他目录和文件已经可以删除了,这样还可以腾出350MB的空间来。不过我又研究了一下,其实libs这个目录也很有用,它提供了所有Boost类的使用范例,平时可以作为参考;另外doc目录是一个完整的boost使用帮助文档,当然最好也不要删了。其他几个目录和文件加起来也就几十兆,索性都给它们留一条生路吧。

    64 位编译

    和32位环境不同,x64环境下编译得先从开始菜单启动Visual Studio的Visual Studio 2008 x64 Win64 Command Prompt进入命令提示符,而不是随便打开任意一个命令行窗口就行。然后转到boost根文件夹,运行bootstrap.bat生成x64版的bjam.exe。然后运行命令:

    bjam --build-type=complete toolset=msvc-9.0 threading=multi link=shared address-model=64

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

    以上就是windows下关于boost 64位和32位库的编译详细介绍的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:windows ,boost
    上一篇:Win7系统下关于inetcpl.cpl启动错误的解决方法 下一篇:详细介绍Windows下如何使用Ansible应用的实例
    PHP编程就业班

    相关文章推荐

    • 重装win7系统的过程 • IIS7.0在win2008下的安装配置教程(图文)• wind10优化 • Win2008 r2下修改mysql data目录的方法详细介绍• 如何关闭win10自动更新

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网