1、进入/work/src_packages/boost_1_49_0目录,执行
sudo ./bootstrap.s
通过执行 sudo ./bootstrap.s --show-libraries 显示所有的库
2、修改 project-config.jam 为以下内容:、
将:
using gcc ;
修改为:
using gcc : arm : /usr/local/arm/4.2.2-eabi/usr/bin/arm-linux-gcc ;
3、在这里只交叉编译线程库,执行:
sudo ./bjam stage --with-thread --build-type=complete --layout=tagged
一定要加上--layout=tagged这个选项,否则会报如下错误:
error: Cannot use --layout=system with --build-type complete.
error: Please used either --layout=versioned or --layout=tagged
error: if you wish to build multiple variants.
error: Note that --layout=system is default on Unix starting with Boost 1.40.
执行完毕完后在stage/lib目录下生成了线程相关的所有库文件:
libboost_thread-mt.a
libboost_thread-mt-d.so
libboost_thread-mt-s.a
libboost_thread-mt.so
libboost_thread-mt-d.a
libboost_thread-mt-d.so.1.49.0
libboost_thread-mt-sd.a
libboost_thread-mt.so.1.49.0
--stagedir=<stagedir> | 存放编译后库文件的路径,默认是stage |
--build-type=complete | 编译所有版本,不然只会编译一小部分版本(确切地说是相当于:variant=release, threading=multi;link=shared|static;runtime-link=shared) |
variant=debug|release | 决定编译什么版本(Debug or Release?) |
link=static|shared | 决定使用静态库还是动态库。 |
threading=single|multi | 决定使用单线程还是多线程库。 |
runtime-link=static|shared | 决定是静态还是动态链接C/C++标准库。 |
--with-<library> | 只编译指定的库,如输入--with-regex就只编译regex库了。 |
--show-libraries | 显示需要编译的库名称 |