‹  返回课程

下载并编译boost库

课文
阅读量:661
技术范畴
下载指定的1.57.0版本的boost源代码包,然后构建其“构建工具(bjam或b2)”,再使用后者编译出静态与动态版的boost库,并安装到指定文件夹内。
课前导言
实际编译时间大概需要1到2小时,请安排好时间。
下载并编译boost库
下载boost源代码,编译为静态和动态库两种形式。
  • 库网址:www.boost.org

  • 下载版本: 1.57.0

  • 订正:视频中说“bjam --show-libraries”用于“查看boost当前包含多少库”。正确的表达是:boost当前包含哪些需要编译的子库(因为有许多子库是直接使用头文件即可)。《白话C++》书中有关这点的表达是正确的。


可能关心的几个问题——

一、为什么叫C++的“准标准库”?

boost是一套开源的C++代码,组织和管理者同样是C++标准委员。许多C++标准库的新功能,来会在boost库中先做实验与验证,包括长时间的试用和改进。并且boost本身也有一套审查机制。许多其它来源的C++库,会经审查后,再进入boost,然后再经长时间使用,条件成熟时再进入C++库。

C++11、14 的正则表达式regex、线程库 thread、时间 chrono,文件系统filesystem……都是先在boost中经多年演练后才修得正果。

二、为什么不使用最新的boost库?

答:boost很庞大,并且一直有新的模块加入,因此版本升级也比较快。哪怕是实际参与C++编程工作的程序员,也都无法全部全学完。初学者应当重点学习boost中比较成熟和常用的库,因此无需一味追新。另外也无需担心自己会学到过时的知识?因为我们所挑选的库,要么比较成熟,变化小,要么就算有变化发展,也很好的延续性保障。

另外,由于新版本的boost库编译方法倒是发生了变化,和书所讲不一致,但编译方法与我们要真正学习知识相比,是一个并不重要的细节,因此我们采用书中所讲的方法。

三、为什么需要静态+动态版,只选一个行吗?

答:也可以,实际工作中,使用动态版或静态版都是可以的。看项目的需要,静态库和动态库的差别和作用,可以在书中《基础》等章节学习。

四、为没有区分“调试”和“发行”版?

答:有的。只是上节课编译wxWidgets时,需要我们手工配置区分,boost自带的构建工具bjam或b2(当然,这个工具也是由我们构建出来),在默认情况下,自行要构建了调试版和发行版,前者的文件名带有-d字样。

五、没有64位的boost版本吗?

当然有!不过,由于我们在《安装并集成mingw-w64编译套件》这节课,在系统范围内配置的编译器路径,是32位的,bjam工具自行检测到这一点,于是自动编译为32位。如果在系统范围内“暴露”的是64位的gcc编译器,则boost也将生成64位版本。

六、最后一个问题:为什么C++的库的都编译得这么长时间啊……

事实上视频作者在录制编译动态版时,已经在公司的躺椅上安详地睡着了……

一是boost的庞大,二是C++语法的复杂性,确实编译时长,三是C++本来就是这个IT世界里的基础设施……基本相当于现实世界中中基建工作。修建高速,打隧道,修跨海大桥……编译时间长点是正常的(通常C++程序员这时候都出门抽烟了)。幸好也就是一次性的,将来用起来就爽了,可谓百年大业,编译开始。

课后补充
完成本课,则一个被称为“……one of the most highly regarded and expertly designed C++ library projects in the world.”的强大的,丰富的库,已经在您的机器上准备就绪——虽然,我们要等到下册才开始大量使用它。