一 下载BOOST库
根据自己的需要下载,主要区别于开发环境,Linux和windows
本文下载的是Linux版本的,boost_1_82_0.tar.gz
本文所处环境:
在Windows下的Linux子系统上进行开发,GCC版本:gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0
二 Linux下用GCC和交叉编译工具编译BOOST
1 解压
tar -zxvf boost_1_82_0.tar.gz
这是解压出来的文件目录
2 用GCC编译
(1)执行脚本
./bootstrap.sh
会生成一个b2的可执行文件
(2)执行b2
./b2 install --prefix="x86_version" --build-dir="build/x86"
对上面参数做一些分析:
--prefix:指定生成物(包括库和头文件)的路径
--build-dir:指定中间编译产物的路径(在编译过程中会生成一些临时文件)
还有一些别的参数,
runtime-link:运行时库。它有2个值,一个是static:只生成静态链接库;另一个是shared:只生成动态链接库。默认是shared。用法如下:
runtime-link=static或者runtime-link=shared
--layout=tagged:区分debug/release 版本。用法如下:
--layout=tagged variant=debug variant=release
开始编译
这个编译有点久。。。
编译完成后,在当前目录下会生成一个x86_version文件夹和一个build文件夹。
x86_version这里面就是我们要的库和头文件。通过file命令可以查看它的文件类型是属于x86_64的
3 用交叉编译工具编译
(1)特别说明
移植这个BOOST库是为了移植VSOMEIP,并且是项目上使用的。所以第一步要加载你们自己项目上的环境。加载好之后,可以用env指令查看当前的交叉编译环境
(2)执行脚本生成b2
由于我们在上面(详细见第二点 用GCC编译 的第一小点 执行脚本)的时候已经生成了可执行文件b2,所以这里就不用再执行了
(3)交叉编译
首先,要先修改配置文件project-config.jam,将里面的交叉编译工具换成自己项目上的
./b2 install --prefix="target/arm" --build-dir="build/arm" --with-log --with-system --with-thread -march=armv8-a -mtune=cortex-a57.cortex-a53 --target=aarch64-sdrv-linux -sysroot=/sysroots/aarch64-sdrv-linux toolset=gcc-aarch64 target-os=linux
产生报错:
In file included from ./boost/config.hpp:39:0,
from ./boost/thread/detail/config.hpp:11,
from libs/thread/src/future.cpp:6:
./boost/config/compiler/gcc.hpp:165:10: fatal error: cstddef: No such file or directory
#include <cstddef>
^~~~~~~~~
compilation terminated.
目前还没找到原因:如果有类似报错的朋友可以留言交流
流程大概是这样了,如果没报错的话,会在当前目录下生成文件夹:target/arm
里面有对应的lib和include。
有问题可私信一起交流学习