目录
本例为:boost库的ARM交叉编译和其中正则表达式库regex的裁剪,boost中其它库的裁剪也可参照此方法。
注意:本人所述都是基于:CentOS Linux release 7.4 的操作,其它发行版本不保证一样!
一、下载源码
官网:https://www.boost.org/users/download/
二、交叉编译
在boost解压后的目录下执行:
- ./bootstrap.sh --with-libraries=regex --prefix=/home/workspace/tools_3rdparty/boost_1_68_0_install_3399
- 参考 boost库交叉编译(Linux生成ARM的库)修改 project-config.jam,替换自己的交叉编译器;
- 执行 ./bjam
- 执行 ./bjam install
上面 --with-libraries= 表示只需生成regex的库文件, --prefix= 表示指定安装路径。
虽然这样生成的库文件只有regex的,但是头文件确是整个boost的,但是除了regex的,其它根本不需要,所以需要裁剪。
整理这个笔记的时候,突然发现有个编译选项:-with-toolset=gcc,尝试一下把这里的gcc替换为自己的交叉编译器,但是报错,具体原因没时间深究,在此做个记录吧。
三、裁剪
只需要regex相关的头文件,参考 boost单独提取regex及自动链接介绍
在boost解压后的目录下执行:
- ./bjam tools/bcp
- cp dist/bin/bcp ./
- mkdir /home/workspace/tools_3rdparty/boost_1_68_0_install_3399/bcp_slimmed
- ./bcp regex.hpp /home/workspace/tools_3rdparty/boost_1_68_0_install_3399/bcp_slimmed
则 bcp_slimmed\boost 就是裁剪过的头文件(可以直接取用), bcp_slimmed\libs\regex\src 就是源文件,这样裁剪出来的可以直接导入自己的工程使用,是否有什么方便方法,可以把裁剪的源码直接编译成 libboost_regex.so 或 libboost_regex.a,目前还不知道,但是结合我这个先编译再裁剪的步骤,也可以达到目的,即:我只需要正则表达式库,但是我不需要那么多其它的头文件!