Fork me on GitHub

Skip to content

Boost 1.34.1安装全程攻略

boost

早在2007年7月24日,boost就发布了最新的1.34.1。相对于5月12日发布的1.34.0来说,新版本添加了对一些新的编译器的支持,使其具有更强的可移植性。根据官方的数据,Boost 1.34.1现在最新支持的编译器包括:

  • Apple GCC 4.01
  • Borland C++ 5.8.2 on Windows
  • GNU C++
  • HP C++ for Tru64 UNIX 7.1.
  • HP aC++ A.06.14.
  • Intel C++ 9.1 on Windows, 9.0 on Linux.
  • Metrowerks CodeWarrior 9.4 on Windows.
  • Microsoft Visual C++ 6.0 (sp5, with and without STLport), 7.0, 7.1, 8.0.
  • Sun Studio 11 on Solaris.

有趣的是,在Microsoft Visual C++编译器家族中,boost给出了如下的注释:

Note: Boost does not support the non-standard “Safe” C++ Library shipping with Visual C++ 8.0, which may result in many spurious warnings from Boost headers and other standards-conforming C++ code. To suppress these warnings, define the macro _SCL_SECURE_NO_DEPRECATE.

最新的vc8竟然成了non-standard “Safe” C++ Library。其实,这也是微软的无奈,在vc8中已经开始以编译警告的方式倡导用户停止在C++代码中使用标准ANSI C函数。一时间,曾被广大C程序员使用的printf、strlen成为了vc8封杀的对象。不过,这样提倡也不是没有好处的,这也是Microsoft进行软件开发这么多年的经验。尽管这些函数曾经是多么地简洁高效,但是使用它们将对给代码带来更多的风险和不稳定因素,包括缓冲区溢出。

详细的boost版本历史可以参考:http://www.boost.org/more/version_history.html 好了,既然Boost 1.34.1都出了这么久了,那我也要使用一下。 在http://sourceforge.net/project/showfiles.php?group_id=7586上可以下到最新的boost。最近才发现,boost在Sourceforge上已经被Hosted很久了,根据上面的资料,应该有八年了。

Okay,下载并解压。windows平台下主要下载zip格式的,但事实上在Linux格式上使用的tar.gz和tar.bz2压缩率更高,如果网速不够快的话,建议下载这样的格式,这样会更快一些。这些格式在Windows下照样可以非常方便地解压。

假设boost解压在E:\boost\Boost_1_34_1中,为了方便,将其定义为BOOST_ROOT。现在开始编译。

其实boost中的大部分库是基于模板的,可以直接使用。只有少数库需要编译相应的静态链接库和动态链接库。

boost本身就有一个用于自身编译的库,为Boost.Build,它是一个基于文本的,用于开发、测试和安装软件的系统。现在的最新版本为v2。其主要是通过解析.jam文件进行编译和安装。编译boost只是其支持的一个功能。需要使用Boost.Build,需要一个叫bjam的可执行程序。当然,代码包中并没有提供直接的程序,而是以源代码的方式提供。然后根据不同的平台编译即可。

在命令行下,进入BOOST_ROOR/TOOLS/JAM/SRC 目录。如果是Windows,则执行build.bat,Linux下执行build.sh。当然,前提是机器上预先安装了VC、GCC等编译环境。Windows系统中,最终在BOOST_ROOT/tools/jam/src/bin.ntx86生成一个bjam.exe的可执行程序。将其复制到BOOST_ROOT根目录中。

如果你足够懒的话,就直接下载与编译好的程序了。下载地址在这里。。同样,需要将bjam.exe放到BOOST_ROOT根目录中。

好了,万事俱备。现已Visual C++ 8.0为例进行编译构建。在开始菜单中找到Visual Studio 2005 Command Prompt,进入BOOST_ROOT,敲入命令:

bjam - -build-dir=BUILD_DIR - -toolset=msvc install - -prefix=INSTALL_DIR

其中,- -build-dir指定了编译的临时路径,主要存储编译时生成的obj文件。编译时将BUILD_DIR替换为所需要的路径就可以了。- -toolset指定了编译工具,这里为VC,所以选择msvc。如果为其它的编译器,需要使用相应的简称进行替换,具体参考这里

install指定为安装。这里的安装只是将编译好的库文件和头文件各集中放入到一个目录中,这样使用起来会比较方便。

  • -prefix为安装路径的前缀。如果没有的话,在Windows下默认为C:boost,在Linux下默认为/usr/local。

当然,bjam的选项不止这些。如果有兴趣的话,可以输入bjam –help,这里有非常详细的帮助,前提是你要有足够的耐心。

好了,当回车键按下后,接下来的事情就如侯捷先生说的那样,可以去吃一顿饭,小睡一会。因为编译的时间将长达1个多小时,具体时间取决于CPU的速度。

[一个小时后...]

如果一切顺利的话,在INSTALL_DIR中将有两个目录:include和lib,分别为头文件可库文件的路径。在Visual Studio中分别将INSTALL_DIR/include/boost-1_34_1加入到include搜索路径中,INSTALL_DIR/lib加入到lib搜索搜索路径中,安装就完成了。

最后测试一些,你的路径和库是否正常。建立一个Win32 Console Application,敲入如下代码:

#include <boost/regex.hpp>
#include <iostream>
#include <string>
int main()
{
  std::string line;
  boost::regex pat( "^Subject: (Re: |Aw: )*(.*)" );
  while (std::cin)
  {
    std::getline(std::cin, line);
    boost::smatch matches;
    if (boost::regex_match(line, matches, pat))
      std::cout << matches[2] << std::endl;
  }
}

Build!

如果一切顺利通过,恭喜你,boost安装成功。对程序可以进行如下测试:

将以下文字复制,存储为foo.txt:

To: George Shmidlap
From: Rita Marlowe
Subject: Will Success Spoil Rock Hunter?
---
See subject.

然后,在命令行下输入:

pathtocompiledexample < pathtofoo.txt

如果最后的输出为:“Will Success Spoil Rock Hunter?”,那么,一切都是完美的。 开始尽情享受boost吧。

– 参考: Boost C++ Libraries:http://www.boost.org

你也许会喜欢

Categories: C++.

Tags: ,

Comment Feed

5 Responses

  1. 我其实一直没搞清楚怎么部分编译boost,1G…

  2. 那就参考bjam –help吧,里面有很详细的说明。 应该是使用 –with-和–without-来进行部分编译。 还有,我最近编译出来的库一共有2G。这对硬盘也是一个极大的考验~

  3. 我只编我要用的,而且随用随编,:)

  4. 按照你的方法做了。但是还是不能编译。提示说python那部分没有。应该是要加上–without-python?我会想办法的,嘿嘿。 还有就是 bjam –build-dir=BUILD_DIR –toolset=msvc install –prefix=INSTALL_DIR 这句, 我开始的时候总是以为“–”是“-”,这俩个真的很不好区别的!希望提示一下。毕竟,菜鸟需要帮助吗。

  5. 如果没有安装python,那么编译时只会带来警告,应该不会导致无法编译吧。如果实在不行,加上-without-python应该能解决问题。 后面那个是我的问题,目前这个字体显示两个”-”是在一起的,看上去像是一个中文符号。现在已经加上空格,看上去应该没有问题了



Some HTML is OK

or, reply to this post via trackback.