boost库安装及其交叉编译库生成

文章目录

boost库安装及其交叉编译库生成前言一、boost是什么?二、安装编译步骤1.下载库2.Install Boost.Build3.配置交叉编译环境,编辑user-config.jam如下4.写个简单的编译脚本方便编译以上各平台环境的boost运行库,编辑mk_conan_release.sh如下:5.编译示例

总结

前言

本文介绍boost安装及不同平台架构运行的boost库编译。

一、boost是什么?

boost库是一个功能强大,构造精巧,跨平台的免费的C++开源库。它使得C++编程更优雅、更有活力、更高产,C++11的标准有三分之二来自boost库。在boost1.57版本时,就一共包含了129个组件,分为25个大类,涵盖了文本处理,容器,迭代器,算法,图像处理,模板元编程,并发编程等许多领域。

二、安装编译步骤

1.下载库

从boost官网下载对应版本并解压,本文以boost_1.81.0为例: 官方安装参考。

2.Install Boost.Build

安装b2

cd boost_1_81_0

cd tools/build

./bootstrap.sh

./b2 install prefix=../../b2_install

.bashrc或.zshrc中添加环境变量,Add b2_install/bin to your PATH environment variable

export PATH=/home/mini/data3/boost_1_81_0/b2_install/bin:$PATH

3.配置交叉编译环境,编辑user-config.jam如下

返回boost_1_81_0目录。 using gcc指定编译工具,设定不同交叉编译工具链即可编译相应目标板运行boost库。更多交叉编译官方参考B2 User Manual:

using gcc : 4.9 : g++-4.9 : ; # 编译Ubuntu Trusty下运行库,前提是PC上已安装gcc4.9

using gcc : 7 : g++-7 : ; # 编译Ubuntu Bionic下运行库,前提是PC上已安装gcc7

using gcc : 9 : g++-9 : ; # 编译Ubuntu Focal下运行库,前提是PC上已安装gcc9

using gcc : tda4 : /home/mini/data3/lane_repo/tda4_rtos_sdk/gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-g++ : ; # 编译armv8架构,Linux系统运行库

using gcc : mdc : /usr/local/mdc_sdk/dp_gea/mdc_cross_compiler/bin/aarch64-target-linux-gnu-g++ : ; # 编译armv8架构,Linux系统运行库

using gcc : cv22 : /home/mini/data3/amba/c1-sw-sdk/usr/bin/aarch64-linux-gnu-g++ : ; # 编译armv8架构,Linux系统运行库

using gcc : j3 : /home/mini/data3/j3_release/sdk_app/gcc-linaro-6.5.0-2018.12-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-g++ : ; # 编译armv8架构,Linux系统运行库

4.写个简单的编译脚本方便编译以上各平台环境的boost运行库,编辑mk_conan_release.sh如下:

#!/bin/bash

RED_COLOR='\E[1;31m' #红

GREEN_COLOR='\E[1;32m' #绿

YELOW_COLOR='\E[1;33m' #黄

BLUE_COLOR='\E[1;34m' #蓝

RES='\E[0m'

platform=$1

cur_path=`pwd`

#echo ${cur_path}

arr=(${cur_path })

#echo ${arr[@]}

Repo_module=${arr[-1]}

echo -e "${RED_COLOR}<================== platform = ${platform} =====================>${RES}"

echo -e "${GREEN_COLOR}<================== module name = $Repo_module =====================>${RES}"

gcc_path=""

prj_path=/home/mini/data3

install_dir=${prj_path}/conan_dnp/pack_from_prebuild

install_prefix=${install_dir}/${Repo_module}/binaries/${platform}

echo -e "${BLUE_COLOR}<================== install_prefix = ${install_prefix} =====================>${RES}"

# 配置gcc

if [ $platform = "linux" ]; then

b2 -j8 toolset=gcc-4.9 --user-config=./user-config.jam --build-dir=${platform}_build --prefix=${install_prefix} install

elif [ $platform = "linux_focal" ]; then

b2 -j8 toolset=gcc-9 --user-config=./user-config.jam --build-dir=${platform}_build --prefix=${install_prefix} install

elif [ $platform = "cv22" ]; then

b2 -j8 toolset=gcc-cv22 --user-config=./user-config.jam --build-dir=${platform}_build --prefix=${install_prefix} address-model=64 architecture=arm target-os=linux abi=aapcs install

elif [ $platform = "tda4" ]; then

b2 -j8 toolset=gcc-tda4 --user-config=./user-config.jam --build-dir=${platform}_build --prefix=${install_prefix} address-model=64 architecture=arm target-os=linux abi=aapcs install

elif [ $platform = "mdc" ]; then

b2 -j8 toolset=gcc-mdc --user-config=./user-config.jam --build-dir=${platform}_build --prefix=${install_prefix} address-model=64 architecture=arm target-os=linux abi=aapcs install

elif [ $platform = "j3" ]; then

b2 -j8 toolset=gcc-j3 --user-config=./user-config.jam --build-dir=${platform}_build --prefix=${install_prefix} address-model=64 architecture=arm target-os=linux abi=aapcs install

else

echo "Error : Unsupport Platform :"${platform}

exit 0

fi

5.编译示例

./mk_conan_release.sh linux

./mk_conan_release.sh linux_focal

./mk_conan_release.sh cv22

./mk_conan_release.sh tda4

./mk_conan_release.sh mdc

总结

以上就是最近boost交叉编译工作的总结。鉴于网上各种文章,均未找到完全详尽指导交叉编译过程,特此记录,也希望给诸君有益参考。

好文链接

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。