一. PC编译安装boost

boost是C++的准标准库,其有两种安装方法。

1. ubuntu下,通过sudo apt-get install libboost-all-dev。

2. 通过源码包安装,http://sourceforge.net/projects/boost/files/latest/download?source=dlp

   下载源码包:boost_1_57_0.tar.bz2

    1)解压后,进入目录,配置编译环境

          ./bootstrap.sh

          注:boost下头文件在目录boost下。

     2) 编译

          ./b2

          编译完成后,stage下是生成的库文件。

     3) 安装到主机上

         sudo ./b2 install

          默认安装头文件/usr/local/include/boost目录下,库文件在/usr/local/lib目录下。

二. ARM交叉编译boost

    1)解压后,进入目录,配置编译环境,同PC。

          ./bootstrap.sh

          注:boost下头文件在目录boost下。

     2) 编译

    编译前需配置交叉编译器,



if ! gcc in [ feature.values <toolset> ]

{

#关键是以下这句的修改

using gcc : arm : arm-linux-g++ ;

#另外生成目录或者放置编译结果的目录请自行另作选择

}


          ./b2

          编译完成后,stage下是生成的库文件。



gcc.compile.c++ bin.v2/libs/wave/build/gcc-arm/release/link-static/threading-multi/token_ids.o
gcc.compile.c++ bin.v2/libs/wave/build/gcc-arm/release/link-static/threading-multi/wave_config_constant.o
common.mkdir bin.v2/libs/wave/build/gcc-arm/release/link-static/threading-multi/cpplexer
common.mkdir bin.v2/libs/wave/build/gcc-arm/release/link-static/threading-multi/cpplexer/re2clex
gcc.compile.c++ bin.v2/libs/wave/build/gcc-arm/release/link-static/threading-multi/cpplexer/re2clex/aq.o
gcc.compile.c++ bin.v2/libs/wave/build/gcc-arm/release/link-static/threading-multi/cpplexer/re2clex/cpp_re.o
gcc.archive bin.v2/libs/wave/build/gcc-arm/release/link-static/threading-multi/libboost_wave.a
common.copy stage/lib/libboost_wave.a
...failed updating 60 targets...
...skipped 21 targets...
...updated 975 targets...


        一般情况下,有些库编译不成功,编译完成的库都在stage/lib下。

     3) 安装到主机上

          创建目录/usr/arm,/usr/arm/include,/usr/arm/lib;将boost/这个目录拷贝至/usr/arm/include下,将stage/lib下的库文件拷贝至/usr/arm/lib下。

          默认安装头文件/usr/local/include/boost目录下,库文件在/usr/local/lib目录下。

三. 编译个小程序验证下是否成功。



#cat test.cpp 
#include <boost/lexical_cast.hpp>
#include <iostream>

int main()
{
using boost::lexical_cast;
int a= lexical_cast<int>("123456");
double b = lexical_cast<double>("123.456");
std::cout << a << std::endl;
std::cout << b << std::endl;
return 0;
}



g++ -o test test.cpp
#ls
test test.cpp
# ./test
123456
123.456