BOOST库移植到arm平台

本文详细介绍了如何在Linux下使用GCC和交叉编译工具编译BOOST库,包括下载Linux版本的boost_1_82_0.tar.gz,使用GCC编译的步骤,以及在Windows下的Linux子系统中配置和使用交叉编译工具进行编译。在交叉编译过程中遇到了cstddef头文件缺失的错误,目前问题尚未解决。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一 下载BOOST库

网址:Boost Downloads

根据自己的需要下载,主要区别于开发环境,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。

有问题可私信一起交流学习

4 参考文献/链接

Linux file命令 | 菜鸟教程 (runoob.com)

Boost库编译指南_boost编译_Jelin大魔王的博客-优快云博客

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值