`
anders0913
  • 浏览: 91270 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

编译boost_1_35_0详述

阅读更多
要说C++库也不少了,虽然跟java比还是少了点。拔高一点来说,c++将来的出路可能就在标准库了,c++圈子里的那些牛人似早就意识到了这一点,也做了不少努力,之前的比如大名鼎鼎的STL,最近的比如boost。据说boost有可能被纳入未来的c++标准之中,因此也就很有必要先了解一番了。

其实开始接触boost是因为项目中需要用到异步通信,很自然就想了解下人家是怎么做的。考虑过java的那个NIO,还有ACE库,后来就看上了boost的asio,没有特别的理由,Java高手没人啊,ACE有点太笨重,当初认为boot还算可以。后来发现boost确实是个好东西,你可以把它当作工具库,呵呵,比较喜欢asio,thread,any和spirit,还有好多没有研究呢,说不定还有更多宝贝。

废话少说,那就开始呗,首先碰到的编译问题,有点让人摸不着北。如果你有同感,就接着往下看吧。

    编译步骤(boost_1_35_0版,其它版本可能稍有不同):

    (一).编译jam:

        1.下载boost_1_35_0.zip文件,解压,默认会解压到boost_1_35_0目录下。
        2.到boost_1_35_0\tools\jam\src下运行build.bat/build.sh编译jam
        3.编译成功的话,会在当前目录下生成一个bin.*的目录,其中*更具不同的平台结果不同,如:windows下为bin.ntx86,solaris下为bin.solarissparc等。同时在该目录会生成一个为名为bjam的可执行文件
        4.把bjam拷贝到boost_1_35_0目录下

    (二)编译boost库

        1.win平台编译:
            A.vc8:bjam --toolset=msvc-8.0 --build-type=complete stage(vc8.0)
            B.vc7:换一种编译办法:先打开vc7自带的命令提示工具,输入名令:bjam --build-type=complete stage
        2.solaris编译(使用gcc)
            bjam --toolset=gcc stage -d2 -j32 address-model=64 architecture=sparc instruction-set=v9 --build-type=complete stage (32位)
            bjam --toolset=gcc address-model=64 address-model=64 architecture=sparc instruction-set=v9 --build-type=complete stage  (64位)
     (三)如果不想编译全部模块,用参数指定即可
           例如:bjam --toolset=gcc stage -d2 -j32 address-model=64 architecture=sparc instruction-set=v9 --with-system --with-thread --with-date_time --with-regex --build-type=complete stage
     (四)编译完成
           编译完成后会在boost_1_35_0目录下新建stage目录,编译结果在该目录的下的lib目录下。结果包括.lib和.dll/.so文件。根据需要链接这些库文件即可。
     (五)编译结果文件命名规则
           每个库文件名称构成如下:
           “lib”+库名称+编译器及参数+线程参数+编译类别+版本号+”.”+文件扩展名
          (例如:libboost_thread-vc71-mt-sgd-1_35.lib)
          具体说明:
            1.Lib:前缀。
            2.库名称:boost_thread。所有的库文件名都以boost_开头。
            3.编译器及参数:-vc71,用于编译boost库的编译器以及版本。
            4.线程参数:-mt是否支持多线程。
            5.编译类型:-d
        编译类型可以没有,可以有多个,它们取值如下:
类型

含义

s
linking statically to the C++ standard library and compiler runtime support libraries.

g
using debug versions of the standard and runtime support libraries.

y
using a special debug build of Python.

d
building a debug version of your code.7

p
using the STLPort standard library rather than the default one supplied with your compiler.

n
using STLPort's deprecated “native iostreams” feature.8


6.版本号:-1_35。

7.后缀:.lib

  根据平台不同可能不同,在大多数unix平台,静态库为.a,动态库为.so;在windows平台则静态库为.lib,动态库为.dll。还可能和编译器有关,如gcc的静态库总是.a,无论在unix还是在windows平台。

关于编译的其它详细信息,查看boost的文档是很重要的。当初在这块也费了不少神,那时有人这样提醒我一下就好了。

;-)


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics