`
huozheleisi
  • 浏览: 1234335 次
文章分类
社区版块
存档分类
最新评论

VS2005 使用Boost库的编译步骤

 
阅读更多

VS2005 使用Boost库的编译步骤.

1. 下载Boost库.

http://www.boost.org/

2. 解压下载回来的boost库

例如解压到C:/boost_1_41_0

3. 编译生成bjam.exe

要编译boost, 先编译生成bjam.exe工具.

cmd到C:/boost_1_41_0/tools/jam/src下, 输入:

build.bat vc8

(其中msvc代表了VC6, 例如其他版本, 可以是borland, como, gcc, gcc-nocygwin, intel-win32, metrowerks, mingw, msvc, vc7, vc8, vc9, vc10等)。

执行完后, 在C:/boost_1_41_0/tools/jam/src/bin.ntx86 目录下就有了bjam.exe 了.

4. 把bjam.exe拷贝到bjam必须与boost-build.jam在同级目录

我的就在C:/boost_1_41_0目录下.

5. 编译boost(我使用的完全编译, VC60)

cmd 到C:/boost_1_41_0 输入:

bjam --toolset=msvc-8.0 --build-type=complete

睡一觉后回来, 编译完毕了!

当然完全编译是比较笨的方法, but why not?

6. bjam.exe的一些选项说明

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

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

without/with:选择不编译/编译哪些库。本人不需要编译python库,所以排除之,可以根据各人需要选择,默认是全部编译。但是需要注意,如果选择编译python的话,是需要python语言支持的,应该到python官方主页http://www.python.org下载安装。

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

build-dir:编译生成的中间文件的路径。这个本人这里没用到,默认就在根目录(E:/SDK/boost_1_39_0)下,目录名为bin.v2,等编译完成后可将这个目录全部删除(没用了),所以不需要去设置。

link:生成动态链接库/静态链接库。生成动态链接库需使用shared方式,生成静态链接库需使用static方式。这里需要注意的是,static方式下,最终生成的很多静态链接库大小都在几兆、几十兆,甚至接近百兆。这么大的库我们一般是不会采用静态链接方式的,所以这些库不推荐以static方式编译(without掉);如果已经编译了赶快删,肯定没用,否则将占用近1G的硬盘空间。以下是巨型库黑名单:wave、graph、math、regex、test、program_options、serialization、signals。

runtime-link:动态/静态链接C/C++运行时库。同样有shared和static两种方式,这样runtime-link和link一共可以产生4种组合方式。虽然它和link属性没有直接关系,但我们习惯上,一个工程如果用动态链接那么所有库都用动态链接,如果用静态链接那么所有库都用静态链接。所以这样其实只需要编译2种组合即可,即link=shared runtime-link=shared和link=static runtime-link=static。

threading:单/多线程编译。一般都写多线程程序,当然要指定multi方式了;如果需要编写单线程程序,那么还需要编译单线程库,可以使用single方式。

debug/release:编译debug/release版本。一般都是程序的debug版本对应库的debug版本,所以两个都编译。

7. 配置

include目录:C:/boost_1_41_0

library目录:C:/boost_1_41_0/stage/lib

添加到IDE相应的路径下面即可。

8. 使用

使用举例:

#include <boost/thread.hpp>

此时,不用包含库文件,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-vc90-mt-1_39.lib")

#pragma comment(lib, "boost_thread-vc90-mt.lib")

这两个lib其实是一样的,实在不明白boost编译时为什么每个库都要复制一份,难道是因为后者在升级boost版本后不用改代码?另外还有一个比较有用的宏:

#define BOOST_LIB_DIAGNOSTIC

它可以让VC在编译时的output窗口中输出程序具体链接了哪些boost库以及链接顺序。

关于boost的auto-link机制,详细可以看看boost/config/auto_link.hpp里的代码,很容易可以读懂,并且值得我们学习。

看下面代码

// boost 序列化成 xml文件

http://blog.csdn.net/cay22/archive/2009/07/28/4386394.aspx

使用VC6也编译过了一次, 可能VC6对最新版boost的支持不太好吧, 编译使用boost的工程上有错, 现在VC6也逐渐少用了!

参考:

http://www.cnblogs.com/wondering/archive/2009/05/21/boost_setup.html

分享到:
评论

相关推荐

    VS2008编译Boost_1_47_0指南

    VS2008编译Boost_1_47_0指南 按步骤讲解,很详细

    vc2010成功编译stlPort5.2.1和boost1.53.0的方法及使用中的问题、解决办法

    2、说明了最新的boost_1_53_0配合stlPort5.2.1使用时的编译方法,全部库在win7下都成功编译 3、说明了如何在vc2010下使用编译好的库及配置不当时可能存在的问题及解决办法等。 查了网上很多资料,但没有发现说的够...

    vc2010编译stlPort521和boost1.53的方法及使用中的问题的解决办法

    2、说明了最新的boost_1_53_0配合stlPort5.2.1使用时的编译方法,全部库在win7下都成功编译 3、说明了如何在vc2010下使用编译好的库及配置不当时可能存在的问题等。 查了网上很多资料,但没有发现说的够清楚的,总是...

    OWT Native SDK编译 + c++ Windows demo编译

    OWT Native SDK在Windows成功编译,内含编译所需各安装包,以及详细的编译步骤。 MFC Windows OWT client Demo成功编译,内含编译所需各安装包,以及详细的编译步骤。 OWT,C++,ConfSampleMFC,Android,Windows。 ...

    linux下安装boost库的完整步骤记录

    Boost库是一个可移植、提供源代码的C++库,作为标准库的后备,是C++标准化进程的开发引擎之一。 Boost库由C++标准委员会库工作组成员发起,其中有些内容有望成为下一代C++标准库内容。在C++社区中影响甚大,是...

    boost_1_59_0.zip

    1.64.0版本的boost库的源码,Linux平台和Windows平台均可使用,Linux平台编译步骤1:./bootstrap.sh,2:./b2 。Windows平台编译步骤:1: ./bootstrap.bat,2:.\b2.exe

    利用Boost.Python将C++代码导入到Python模块

    首先,将C++下的代码编译为动态库,并将生成的动态库命名为封装模块的名字,如:用BOOST_PYTHON_MODULE(Module_Name)宏对需要导出的函数、全局变量、类等导入Python的Module_Name模块,此时生成的动态库需要更名为...

    boost_1_64_0.zip

    1.64.0版本的boost库的源码,Linux平台和Windows平台均可使用,Linux平台编译步骤1:./bootstrap.sh,2:./b2 。Windows平台编译步骤:1: ./bootstrap.bat,2:.\b2.exe

    mysql-boost-5.7.24.tar.gz

    该资源是带有boost库的mysql,mysql-boost-5.7.20.tar.gz源码包,用于编译安装,安装步骤可以看我之前博客,有详细步骤,用于lnmp环境搭建

    mysql-boost-5.7.20.tar.gz

    mysql-boost-5.7.20.tar.gz源码包,用于编译安装,安装步骤可以看本人之前博客,有详细步骤及解释

    sersync:sersync原始代码分析,学习,编译

    编译步骤 CentOS7下编译成功。 首先下载boost库,解压,得到boost_1_64_0 。 将其根目录下的boost子目录副本到/usr/local/include目录下,作为头文件引用。 然后按照中的指示安装boost库,作为共享库so使用,命令...

    Q群云秘书 avbot (聊天机器人).zip

    boost 请静态编译, gentoo 用户注意 USE=static-libs emerge boostwin 下, boost 请使用 link=static runtime-link=static 执行静态编译 (包括 mingw 下)。linux 下如果必须自己编译 boost 的话,请使用参数 link=...

    cpp-netlib-0.11

    windows上的编译步骤: 1、下载http://commondatastorage.googleapis.com/cpp-netlib-downloads/0.11.0/cpp-netlib-0.11.0.zip -- 好久才找人帮忙down下来,共享一下,方便又需要的兄弟 2、安装cmake 3、安装...

    qbittorrent-installer:“Dark qbittorrent”的安装程序

    从 msys2 存储库 x86_64 版本安装:qt5、boost、openssl、gcc、cmake、make、ninja 等 获取 libtorrent-rasterbar 1.0.11,使用 cmake 编译 克隆仓库 用cmake编译它: 使用前面的步骤设置 LibtorrentRasterbar_...

    Keller-encode:与凯勒猜想有关的代码

    可以调用特殊目标,例如: $ make s3编译细节可以指定Boost安装的位置以编译pprsearch工具: $ make tools/pprsearch/pprsearch BOOST_ROOT=/path/to/boost工具链详细信息n∊ {3,4,6}的验证目标s 运行多个步骤,以...

    PaPILO:整数和线性优化的并行预求解

    例程使用模板实现,该模板允许使用boost多精度软件包切换到更高的精度或有理算法。 除了在LGPLv3下的分发之外,PaPILO还作为SCIP优化套件的一部分进行分发,该套件可在下获得。 PaPILO可用作基于标题的库,并且还...

    Cinder-Assimp:用于导入 Open Asset Import Library 的 3d 模型的煤渣块

    可以通过以下步骤重新编译静态库: 从下载 Assimp ####在 OSX 上构建说明 unzip assimp--3.0.1270-source-only.zip cd assimp--3.0.1270-source-only mkdir build cd build cmake -DENABLE_BOOST_WORKAROUND=ON

    LazzyQuant:期货预算量化交易系统

    爵士乐极客量化交易平台。主要功能:接收市场行情数据,生成K线数据并保存至数据库根据交易策略,寻找获利机会并做出开仓/...j4注:编译时找不到boost库的头文件可通过以下命令安装RedHat / CentOS:sudo yum安装增强De

    Regenie_WDL:WDL for Regenie

    Regenie_WDL 这是再生的工作流程。 regenie: ://rgcgithub.github.io/regenie/ 步骤1和步骤2使用带有已安装Boost Iostream编译的regenie的docker映像: : 其他任务使用官方R docker镜像: :

    lut_ldpc:LUT LDPC是一组软件工具,用于基于使用查找表的离散消息传递解码来设计和测试LDPC解码器

    概述代码,合奏和树木为展开的... 安装 要求boost C ++库用于文件系统抽象和程序I / O。 IT ++是通过子模块包含的,因为我们必须进行一些修补才能访问其类的内部。 为了成功地使用IT ++进行编译,您需要其依赖项为FFTW3

Global site tag (gtag.js) - Google Analytics