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指南 按步骤讲解,很详细
2、说明了最新的boost_1_53_0配合stlPort5.2.1使用时的编译方法,全部库在win7下都成功编译 3、说明了如何在vc2010下使用编译好的库及配置不当时可能存在的问题及解决办法等。 查了网上很多资料,但没有发现说的够...
2、说明了最新的boost_1_53_0配合stlPort5.2.1使用时的编译方法,全部库在win7下都成功编译 3、说明了如何在vc2010下使用编译好的库及配置不当时可能存在的问题等。 查了网上很多资料,但没有发现说的够清楚的,总是...
OWT Native SDK在Windows成功编译,内含编译所需各安装包,以及详细的编译步骤。 MFC Windows OWT client Demo成功编译,内含编译所需各安装包,以及详细的编译步骤。 OWT,C++,ConfSampleMFC,Android,Windows。 ...
Boost库是一个可移植、提供源代码的C++库,作为标准库的后备,是C++标准化进程的开发引擎之一。 Boost库由C++标准委员会库工作组成员发起,其中有些内容有望成为下一代C++标准库内容。在C++社区中影响甚大,是...
1.64.0版本的boost库的源码,Linux平台和Windows平台均可使用,Linux平台编译步骤1:./bootstrap.sh,2:./b2 。Windows平台编译步骤:1: ./bootstrap.bat,2:.\b2.exe
首先,将C++下的代码编译为动态库,并将生成的动态库命名为封装模块的名字,如:用BOOST_PYTHON_MODULE(Module_Name)宏对需要导出的函数、全局变量、类等导入Python的Module_Name模块,此时生成的动态库需要更名为...
1.64.0版本的boost库的源码,Linux平台和Windows平台均可使用,Linux平台编译步骤1:./bootstrap.sh,2:./b2 。Windows平台编译步骤:1: ./bootstrap.bat,2:.\b2.exe
该资源是带有boost库的mysql,mysql-boost-5.7.20.tar.gz源码包,用于编译安装,安装步骤可以看我之前博客,有详细步骤,用于lnmp环境搭建
mysql-boost-5.7.20.tar.gz源码包,用于编译安装,安装步骤可以看本人之前博客,有详细步骤及解释
编译步骤 CentOS7下编译成功。 首先下载boost库,解压,得到boost_1_64_0 。 将其根目录下的boost子目录副本到/usr/local/include目录下,作为头文件引用。 然后按照中的指示安装boost库,作为共享库so使用,命令...
boost 请静态编译, gentoo 用户注意 USE=static-libs emerge boostwin 下, boost 请使用 link=static runtime-link=static 执行静态编译 (包括 mingw 下)。linux 下如果必须自己编译 boost 的话,请使用参数 link=...
windows上的编译步骤: 1、下载http://commondatastorage.googleapis.com/cpp-netlib-downloads/0.11.0/cpp-netlib-0.11.0.zip -- 好久才找人帮忙down下来,共享一下,方便又需要的兄弟 2、安装cmake 3、安装...
从 msys2 存储库 x86_64 版本安装:qt5、boost、openssl、gcc、cmake、make、ninja 等 获取 libtorrent-rasterbar 1.0.11,使用 cmake 编译 克隆仓库 用cmake编译它: 使用前面的步骤设置 LibtorrentRasterbar_...
可以调用特殊目标,例如: $ make s3编译细节可以指定Boost安装的位置以编译pprsearch工具: $ make tools/pprsearch/pprsearch BOOST_ROOT=/path/to/boost工具链详细信息n∊ {3,4,6}的验证目标s 运行多个步骤,以...
例程使用模板实现,该模板允许使用boost多精度软件包切换到更高的精度或有理算法。 除了在LGPLv3下的分发之外,PaPILO还作为SCIP优化套件的一部分进行分发,该套件可在下获得。 PaPILO可用作基于标题的库,并且还...
可以通过以下步骤重新编译静态库: 从下载 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
爵士乐极客量化交易平台。主要功能:接收市场行情数据,生成K线数据并保存至数据库根据交易策略,寻找获利机会并做出开仓/...j4注:编译时找不到boost库的头文件可通过以下命令安装RedHat / CentOS:sudo yum安装增强De
Regenie_WDL 这是再生的工作流程。 regenie: ://rgcgithub.github.io/regenie/ 步骤1和步骤2使用带有已安装Boost Iostream编译的regenie的docker映像: : 其他任务使用官方R docker镜像: :
概述代码,合奏和树木为展开的... 安装 要求boost C ++库用于文件系统抽象和程序I / O。 IT ++是通过子模块包含的,因为我们必须进行一些修补才能访问其类的内部。 为了成功地使用IT ++进行编译,您需要其依赖项为FFTW3