理论上,本文适用于boost的各个版本,尤其是最新版本1.45.0;适用于各种C++编译器,如VC6.0(部分库不支持),VS2003,VS2005,VS2008,gcc,C++ Builder等。先总结一下Windows系统。
一、下载
首先从boost官方主页http://www.boost.org/
下载最新版boost安装包(目前最新版是boost_1_45_0.7z)。
二、安装
将boost安装包解压至本地目录,如:E:\SDK\boost_1_45_0。因为boost一部分类是需要编译成库才能使用的,
所以我们还需要准备好boost专用的编译辅助工具bjam。在命令提示符(cmd.exe)中执行根目录下的bootstrap.bat,编译后的
bjam.exe会自动拷贝到该目录下(bjam必须与boost-build.jam在同级目录)。
三、编译
接下来就是最重要的编译步骤了。需要打开命令提示符(cmd.exe)窗口并执行bjam,可以使用--help参数来查看命令帮
助。这里详细讲解一下bjam的命令行参数,因为它非常重要。首先,它涉及到编程环境的搭建,你需要根据自己今后具体的使用环境来选择合适的命令行参数;
其次,它影响到你的硬盘空间,完全编译的话据说在3G以上,如果你同时拥有2个以上的IDE(如VC6和VC9共存)而且都要用到boost,那么占用多
少硬盘就自己算吧……虽说如今大家的硬盘空间都不成问题,但就像本人一样崇尚合理利用资源不习惯铺张浪费提倡节俭的童子应该大有人在。综合以上两点因素,
本人使用的bjam命令如下:
bjamstage--toolset
=
msvc-
9.0
--without-graph --without-graph_parallel --without-math --without-mpi --without-python --without-serialization --without-wave--stagedir
=
"
E:\SDK\boost_1_45_0\bin\vc9
"
link
=
staticruntime-link
=
sharedthreading
=
multi
debug
release
下面详细解释一下每个参数的含义,请务必仔细看完:
stage/install:
stage表示只生成库(dll和lib),install还会
生成包含头文件的include目录。本人推荐使用stage,因为install生成的这个include目录实际就是boost安装包解压缩后的
boost目录(E:\SDK\boost_1_45_0\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官方主页
http://www.python.org/
下载安装。
stagedir/prefix:
stage时使用stagedir,install时使用
prefix,表示编译生成文件的路径。推荐给不同的IDE指定不同的目录,如VS2008对应的是E:\SDK\boost_1_45_0\bin
\vc9,VC6对应的是E:\SDK\boost_1_45_0\bin\vc6,否则都生成到一个目录下面,难以管理。如果使用了install参
数,那么还将生成头文件目录,vc9对应的就是E:\SDK\boost_1_45_0\bin\vc9\include\boost-1_45
\boost,vc6类似(光这路径都这样累赘,还是使用stage好)。
build-dir:
编译生成的中间文件的路径。这个本人这里没用到,默认就在根目录(E:\SDK\boost_1_45_0)下,目录名为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_45_0目录(包括安装包解压缩文件
和编译生成的库文件)只有不到500MB。事实上编译完成后安装包解压缩文件除了boost目录之外其他目录和文件已经可以删除了,这样还可以腾出
150MB的空间来。不过我又研究了一下,其实libs这个目录也很有用,它提供了所有Boost类的使用范例,平时可以作为参考;另外doc目录是一个
完整的boost使用帮助文档,当然最好也不要删了。这样剩下的几个目录和文件加起来也就十多兆,索性都给它们留一条生路吧。
呵呵,一个完整而又完美的boost目录就此诞生了。
如果图省事,不想了解这么多,那么有简单的方法,可以使用命令:
bjam--toolset
=
msvc-
9.0
--build-
type
=
complete
直接指定编译器以完全模式编译即可,这样可以满足今后的一切使用场合,但同时带来的后果是:
1、占用3G以上的硬盘空间
2、占用若干小时的编译时间
3、头文件和库文件存放于C:\Boost(个人非常反感)
4、生成的很多文件可以永远也用不上
四、配置
include目录:E:\SDK\boost_1_45_0
library目录:E:\SDK\boost_1_45_0\bin\vc9
添加到IDE相应的路径下面即可。
五、使用
使用举例:
#include
<
boost\thread.hpp
>
此时,不用包含库文件,boost的auto-link机制将会自动帮我们包含对应的静态lib。也就是说,boost默认是以静态方式链接的,这样我们的工程属性最好也设为Multi-threaded (Debug)。如果想使用dll动态方式链接,需要预先定义宏:
#define
BOOST_ALL_DYN_LINK
同样,此时boost也会默认帮我们包含对应的lib。如果不想使用boost提供的auto-link机制,或者对它的自动链接不太放心的话(其实大可不必担心),可以预先定义宏:
然后使用以下方法链接:
#pragma
comment(lib,"boost_thread-vc90-mt-1_45.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里的代码,很容易可以读懂,并且值得我们学习。
六、Linux下编译与配置的区别:
我的Linux与Windows使用了共享目录,将Windows下的E:\SDK目录映射成了Linux下的/mnt/hgfs/sdk目录。
所以我的boost源文件根目录就是/mnt/hgfs/sdk/boost_1_45_0,cd进去。
首先需要编译bjam:
cd
tools
/
jam
./
build_dist
.
sh
我在虚拟机的Linux下编译bjam的时候最后会卡住,屏幕显示到mkdir的地方就不往下走了,不过其实这时候bajm已经编译完成。
接下来将stage/bin.linuxx86目录下生成的bjam拷贝到boost源文件根目录boost_1_45_0下,cd进去,开始编译boost:
./
bjamstage--toolset
=
gcc--with-date_time--with-thread--with-filesystem--with-program_options--stagedir
=
"
/mnt/hgfs/sdk/boost_1_45_0/bin/gcc
"
link
=
staticruntime-link
=
staticthreading
=
multi
debug
release
这些参数的意义与Windows下完全一样,只不过编译器改成gcc,其他选项根据自己的需要进行设置。
生成的库文件就在bin/gcc/lib目录下,与vc9编译的一样,lib目录感觉是多余的,手动将库文件拷贝到gcc目录下,删掉lib目录,这属于个人喜好问题。
然后把中间文件全部删掉,包括bin.v2目录和tools/jam/stage目录。
关于boost库的使用,为了不用每次写makefile都把boost的头文件和库文件的路径带着,而且为了让跨平台程序公用一套代码,
可以将boost的头文件和库文件路径加到Linux的环境变量中。打开/etc/profile,加入以下gcc环境变量:
CPLUS_INCLUDE_PATH
=$
CPLUS_INCLUDE_PATH:
"
/mnt/hgfs/sdk/boost_1_45_0
"
exportCPLUS_INCLUDE_PATH
LIBRARY_PATH
=$
LIBRARY_PATH:
"
/mnt/hgfs/sdk/boost_1_45_0/bin/gcc
"
exportLIBRARY_PATH
这样就可以直接使用boost的头文件和库文件了,并且与Windows共用一套代码,非常方便。
七、可参考的网上流行的几篇文章:
相关推荐
总的来说,编译安装Boost1.83.0涉及到下载源码、配置编译选项、编译库和安装库到系统路径。这个过程可能会根据你的具体需求和系统环境有所不同,但以上步骤提供了一个基本的指南。务必根据你的实际情况进行适当的...
### Boost库编译指南(VS2008+boost1.38) #### 一、下载Boost 在开始编译之前,首先需要下载Boost库。访问官方网站 [http://www.boost.org](http://www.boost.org),下载Boost 1.38.0版本的代码包。下载后,通常...
标题中的“boost+win7+vs2010+vs2012自动下载编译安装软件”指的是一项技术任务,即在Windows 7操作系统上,使用Visual Studio 2010和2012集成开发环境(IDE)自动化地下载、编译并安装Boost库。Boost是一个开源的...
### VS+Qt+Mysql+addin+boost安装指南 #### 环境搭建概述 本文主要介绍了如何在Windows 7 32位操作系统下搭建基于VS2013的开发环境,具体包括Boost 1_61_0、Qt 5.2以及MySQL的安装配置流程。对于初学者来说,按照...
在本篇中,我们将深入探讨如何使用Visual Studio 2008(VS2008)编译Boost库的1.47.0版本。Boost是一个广泛使用的C++库,包含了许多有助于提升效率和功能的工具,适用于各种编程任务。在VS2008环境下编译Boost有助于...
net 2003平台下编译使用boost库的简捷方法 - 在VC++_net平台下编译使用boost库的简捷方法 - roger007的专栏 - CSDNBlog.mht"和"Boost 1_34_1安装全程攻略 Foremire's Enthusiasm.mht"提供了编译Boost的指南。...
对于VS2010这样的IDE来说,正确配置并编译Boost是非常重要的一步,尤其是当需要使用到特定版本的Boost时。 #### 二、编译前的准备 1. **下载Boost源码**: - 访问Boost官网下载最新的源码包。 - 确保下载的是与VS...
本教程详细介绍了如何在Windows环境下,利用Visual Studio 2008和bjam工具编译Boost 1.38库的过程,包括下载源码、编译工具的生成、库的编译以及配置IDE等步骤。对于需要在Windows平台上使用Boost库的开发者来说,这...
### VS2008+Boost 1_46_1+STLPort-5.2.1 安装与配置指南 #### 一、STLPort-5.2.1的安装与配置 ##### 1. 下载源代码 - **官网地址**:访问STLPort官方网站`http://www.stlport.org/`。 - **版本选择**:选择最新...
### Boost库学习指南 #### 一、Boost库简介与价值 Boost库是一个广泛使用的开源C++库集合,它为开发者提供了丰富的工具集来简化和优化C++编程过程。该库的特点在于其高质量的代码和广泛的适用性,适用于多种操作...
使用`bjam`或`b2`工具进行编译和安装。默认情况下,Boost会安装到`/usr/local`: ``` ./b2 --prefix=/usr/local install ``` 若要更改安装位置,可以使用`--prefix`参数指定。 7. **更新链接器**: 安装完成...
同样,解压`boost_1_59_0.tar.gz`,然后按照Boost的安装指南进行编译和安装。安装Boost通常包括以下步骤: 1. **配置**:在Boost目录下,运行`./bootstrap.sh`脚本来生成配置文件。 2. **定制**:修改生成的配置...
"随附编译方法以渔用者"意味着压缩包中包含了一个PDF文档,详细介绍了如何编译Boost库,以便其他开发者可以参考这个过程,这对于初学者或是不熟悉Boost编译流程的人来说是极其有价值的资源。 标签“win7”、“vs...
- 使用CMake配置FlightGear的编译选项。 - 生成并编译解决方案。 - 完成编译后,根据需要进行安装或测试。 通过遵循上述步骤,您可以成功地使用VS2010编译FlightGear 2.8.0及其依赖的OSG 3.0.1。这些步骤有助于...
《Boost程序库完全开发指南(第3版 中文)》是一本深度剖析Boost库的权威指南,旨在帮助C++开发者充分...在Ubuntu环境下,通过安装Boost库和配置编译环境,开发者可以轻松地实践书中的例子,加深对Boost的理解和应用。
Boost库通常可以通过源码下载后自行编译安装,也可以通过包管理器在某些操作系统上直接安装。安装步骤一般包括: 1. 下载Boost源码。 2. 配置编译选项。 3. 编译并安装库文件。 #### 五、示例代码解析 虽然提供的...