环境: Linux s12084 2.6.9-67.ELsmp #1 SMP Wed Nov 7 13:58:04 EST 2007 i686 i686 i386 GNU/Linux
  gcc version 3.2.3 20030502 (Red Hat Linux 3.2.3-47.3)
  boost 1.37.0
  去年10月份用过一次再没用过了。要用 regex 库,生疏了。小记一下。以备以后参考。
  boost 库做得真好。在windows 平台, linux 平台下编译都很顺利。hp aCC 也宣称对 boost 1.35 完全支持 。
  全部编译是很痛苦的过程。如果要使用哪个库,只需要在 $(boost_root)/libs/下找到感兴趣的库,在 build 目录中,选择编译器使用的 makefile,编译即可。
  例如,我这里使用 boost 1.37 的 regex 库。解压 boost 后根目录是 c:oost_1_37_0。
  然后到下面的目录
  c:oost_1_37_0libs egexuild
  看到一大堆的 .mak 文件。根据名字可以看出来自己需要哪个 .mak 文件。这里我用gcc编译器,所以选择 gcc.mak 。
  编译器可以根据 makefile 文件或参数生成 8 个库。即静态动态、releasedebug 、多线程单线程 库。从名字上看, debug 版本比其它版本的多一个 ”_d“, 多线程比其它版本的多一个"_mt"。regex 库在 linux 平台下生成的库文件名列表如下:
  //动态库的两个版本
  libboost_regex-gcc-1_37.so  libboost_regex-gcc-d-1_37.so
  //静态库的两个版本
  ibboost_regex-gcc-1_37.a   libboost_regex-gcc-d-1_37.a
  // 多线程动态的两个版本
  libboost_regex-gcc-mt -1_37.SO   libboost_regex-gcc-mt-d-1_37.so
  //多线程静态的两个版本
  libboost_regex-gcc-mt -1_37.a   libboost_regex-gcc-mt-d-1_37.a
  一小会儿编译好了。编译后生成的库文件在。
  使用时,需要在 makefile 中用 -I 选项添加 boost 根目录的路径。如果使用动态连接库,还需要在 -L选项中添加对 .so 文件的引用。详细的解释援引下面的论述。
  使用boost::regex的问题
  来自:http://bbs.chinaunix.net/viewthread.php?tid=987718
  单独编译了regex,生成了libboost_regex-gcc-1_34.a,现在试验regex能否生效,代码如下:
CODE:
#include<boost/regex.hpp>
int main(int argc,char * argv[])
{
boost::regex e("test");
return 0;
}
#g++ regex.cpp -I /path/to/boostroot -L/path/to/libboost_regex-gcc-1_34.a -o regex
报错:
/tmp/ccf4WLI8.o(.gnu.linkonce.t._ZN5boost11basic_regexIcNS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE6assignEPKcS7_j+0x13): In function `boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::assign(char const*, char const*, unsigned int)':
: undefined reference to `boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::do_assign(char const*, char const*, unsigned int)'
collect2: ld returned 1 exit status