Chinaunix首页 | 论坛 | 博客
  • 博客访问: 418008
  • 博文数量: 54
  • 博客积分: 1186
  • 博客等级: 少尉
  • 技术积分: 668
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-11 04:57
文章分类

全部博文(54)

文章存档

2013年(1)

2012年(6)

2011年(47)

我的朋友

分类: C/C++

2011-05-04 20:25:43

Boost的编译主要分为两步,第一步编译生成bjam编译器,第二步用bjam来编译boost

1. 生成bjam编译器

由于boost不同的版本,bjam包的路径不同,所以这里就以boost_1_38_0为例。

# fetch
# tar jxvf boost_1_38_0.tar.bz2
# cd ./tools/jam/src

bjam的编译程序就在这个目录下(如图1),接着就可以使用build.sh来编译bjam了。


图1
# ./build.sh

编译后bjam程序存放于 ./tools/jam/src/bin.freebsdx86 ,将其复制到boost解压目录下

#  cp bjam /usr/home/jjxiaoyan/soft/boost_1_38_0

vi ./tools/build/v2/user-config.jam

修改“#using gcc ;”为“using gcc ;”


2. 用bjam编译boost

# ./bjam --build-type=complete --with-regex stage #只编译regex库,生成include和lib。可用./bjam clean清理之前的安装

在用bjam编译时,需要注意boost的include和lib生成路径。我在编译时,include生成到/usr/local/include下,而lib又生成到boost解压目录下的stage目录中。

# pwd
/usr/home/jjxiaoyan/soft/boost_1_38_0/stage
# ls
lib

---------------------------------------------

# pwd
/usr/local/include
# ls
X11             boost-1_38      curl

最后就是将boost的include和lib分别复制到/usr/include和/usr/lib目录下了。

# cp -r boost-1_38/boost /usr/include/
# cp -r lib /usr/

3. 编译使用boost库的程序

来个简单的regex程序:

#include
#include

int main()
{
     std::string s = "这是boost regex匹配的内容";
     boost::regex reg( "(.+?)" );
     boost::sregex_token_iterator p( s.begin(), s.end(), reg, 01 );

     boost::sregex_token_iterator end;

     while ( p != end )
     {
         std::cout << *p++ << std::endl;
     }
     return 0;
}

编译运行
# gcc regex.cpp -lboost_regex-gcc42-mt -o regex
# ./regex
这是boost regex匹配的内容

经过一天的反复尝试,总算在FreeBSD下把boost的regex库编译好了。
阅读(2332) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~