Boost库的编译

Boost库本身不用多介绍,每个用C++的人都对它有或多或少的概念。尽管它存在着是否过度设计、是否学院派这类的争论,不过作为C++标准库的 后备它的优秀是谁也否认不了的。下面是网上摘录的一段:

  • 这世上总会有一些智慧让你吃惊。Boost就是这样的东西。
  • Boost没有修改C++的任何规则。它是一个完全符合C++规范的代码库。

对于大部分Boost应用来说,它是不用编译的,直接包含头文件就可使用,如:

any
array
asio
conversion
crc
bind/mem_fn
enable_if
function
lambda
mpl
smart_ptr
...

只有少部分需要编译成库文件,需要编译的库如下:

date_time
filesystem
function_types
graph
iostreams
math
mpi
program_options
python
regex
serialization
signals
system
test
thread
wave

再次啰嗦一句,如果代码中用不到这部分需要编译的Boost库,完全可以不用花时间编译,直接包含头文件 即可。

开始编译

第一步:得到Boost(少说费话,写再多字也没稿费!)

本文对应的版本是Boost.1.37.0。
下载地址:http://www.boost.org/users/download/
解压,本文假设解压到D:/Boost_1_37_0

第二步:得到bjam程序

Boost库由一系列库组成,为了简化编译,就搞了个bjam 这个工具出来。
想偷懒就直接下载可执行版本,下 载地址 。Windows版的是有ntx86 后 缀的那个。
想自己动手先做编译Boost前热身的就接着往下看:

  1. 进入控制台(如果是VC的建议从”Visual Studio 命令提示“进入)
  2. 用cd命令进入boost目录下的tools/jam/src目录,如文本是:D:/Boost_1_37_0/tools/jam/src
  3. 使用build命令编译bjam
    • BCC5.5/BCB6/BCB2006/CB2009用户输入build borland
    • VC用户依据其版本输入build vc7 vc8 vc9
    • Mingw用户输入build mingw
    • 注意,由于build对含有空格的路径 名支持不好,所以有时会编译失败,这时可以通过set path= 命令修改编译器 的路径为8.3格式(可以用dir /x 来 查看对应的8.3格式是什么名字)
  4. 把生成的bjam.exe (bin.ntx86目录下 )拷贝到Boost根目录 下,如文本是:D:/Boost_1_37_0

使用bjam编译Boost

输入命令:

bjam
 --toolset=
borland
(对应BCB)或msvc
(对应VC)或gcc
(对应Mingw) stage

就开始编译了,编译时间比较长(大概半小时左右,依编译器以及选项不同而不同 ),编译好的文件会放在./stage/lib--stagedir= 命令决定 ) 里。

 bjam 还有几个很有用的选项:

bjam参数
--build-dir= <builddir>编译的临时文件会放在builddir里(这样比较好管理,编译完就可以把它删除了)
--stagedir= <stagedir>存放编译后库文件的路径,默认是stage
--build-type= complete编译所有版本,不然只会编译一小部分版本(确切地说是相当于:variant=release, threading=multi;link=shared|static;runtime-link=shared)
variant= debug|release决定编译什么版本(Debug or Release?)
link= static|shared决定使用静态库还是动态库。
threading= single|multi决定使用单线程还是多线程库。
runtime-link= static|shared决定是静态还是动态链接C/C++标准库。
--with- <library>只编译指定的库,如输入--with-regex就只编译regex库了。
--show- libraries显示需要编译的库名称

 

### 解决Boost编译时遇到的问题 #### 1. 配置环境变量 确保已正确设置系统的环境变量,特别是 `PATH` 变量应包含 Visual Studio 的命令行工具路径以及 Boost 安装目录。这有助于避免因找不到必要的编译工具而导致的错误[^1]。 #### 2. 使用适当版本的Visual Studio 不同版本的 Boost 可能与特定版本的 Visual Studio 更兼容。例如,在 Windows 上使用较旧版本如 VS2015 来编译 Boost 1.63 或更高版本时,需确认所使用的 Visual Studio 版本能够支持目标 Boost 版本的要求[^3]。 #### 3. 自定义编译脚本调整 当通过批处理文件(`.bat` 文件)来启动编译过程时,务必检查这些脚本内的参数设定是否匹配当前开发环境的需求。对于某些特定平台或架构的选择(如 32 位 vs 64 位),应当仔细核对并作出相应修改以适应本地条件。 #### 4. 下载源码自行编译而非依赖预构建二进制包 尽管存在许多预先编译好的 Boost 可供下载,但由于不同的编译选项和配置可能导致不一致的行为,因此建议尽可能从官方渠道获取最新版源代码,并按照文档指导完成自定义化编译流程。这样做不仅可以获得更好的性能优化效果,还能有效规避由于第三方提供者采用的不同编译器或其他因素引起的潜在冲突问题[^4]。 #### 5. 查阅日志文件排查具体原因 如果仍然无法成功编译,则可以尝试阅读由 bjam 工具生成的日志文件 (`bootstrap.log`) 中的信息,从中寻找有关失败的具体线索。通常情况下,这类日志会记录下详细的执行步骤及其结果,从而帮助定位实际存在的技术难题所在之处。 ```bash # 进入到解压后的Boost根目录 cd path\to\boost_root_directory # 初始化bjam构建系统(适用于Windows) .\bootstrap.bat # 开始编译指定地址模型下的静态链接 b2 address-model=64 link=static threading=multi variant=release --build-type=complete stage ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值