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) |