boost之编译详解

来源:互联网 发布:淘宝网床单 编辑:程序博客网 时间:2024/05/16 16:10

 

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

 

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

 

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

 

    编译步骤(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的文档是很重要的。当初在这块也费了不少神,那时有人这样提醒我一下就好了。

欢迎转载,但请注明出处。

seeme

原创粉丝点击