记录一下Boost1.74.0版本的PC上编译及交叉编译情况。
一、下载
下载boost源码,这里使用的是1.74.0版本
下载地址:https://boostorg.jfrog.io/artifactory/main/release/1.74.0/source/
二、Ubuntu编译
1、安装依赖包
#安装mpi库
sudo apt-get install mpi-default-dev
#支持正则表达式的UNICODE字符集
sudo apt-get install libicu-dev
#需要python的话
sudo apt-get install python-dev
#安装bzip2 zlib lzma zstd
sudo apt-get install libbz2-dev zlib1g-dev liblzma-dev libzstd-dev
2、编译及安装
这里打算将编译出来的库放在上级目录下的target_pc目录。
那么在解压出来的boost_1_74_0目录下创建编译脚本build_boost.sh:
#!/bin/sh
COMPILER_PREFIX=$(pwd)/../target_pc
rm -rf project-config.jam*
./bootstrap.sh --with-libraries=all --prefix=$COMPILER_PREFIX
./b2 install
在脚本里面制定了编译安装的指定目录,编译生成所有的库,如果要只编译指定的库可以通过参数with-libraries去控制。
–with-libraries=xxx,yyy
执行,大概要等个十多分钟,具体看电脑配置。
3、编译结果
会生成头文件和动态、静态库。
三、交叉编译
1、安装依赖包
交叉编译主要的点在于要配置交叉编译工具(gcc)以及指定编译平台的依赖库(sysroot)。
主要需要有库的是zlib、bzip2、lzma,如果没有的话可以自行下源码交叉编译后把库放到sysroot目录下。
2、编译及安装
这里打算将编译出来的库放在上级目录下的target_cross目录。
那么在解压出来的boost_1_74_0目录下创建编译脚本build_boost.sh:
#!/bin/sh
#编译工具路径
QL_CROSSTOOLS=/opt/ql_crosstools/ql-ag550qcn-le20-gcc820-v1-toolchain/gcc/usr/bin/arm-oe-linux-gnueabi
#SYSROOT路径
QL_SYSROOT=/home/hrx/work/ql-sysroots
COMPILER_SYSROOT="--sysroot=$QL_SYSROOT"
#编译工具
COMPILER_CC=$QL_CROSSTOOLS/arm-oe-linux-gnueabi-gcc
#编译选项
COMPILER_FLAGS="-march=armv7-a -marm -mfpu=neon -mfloat-abi=hard"
#安装位置
COMPILER_PREFIX=$(pwd)/../target_cross
rm -rf project-config.jam*
./bootstrap.sh --with-libraries=all --prefix=$COMPILER_PREFIX
#将gcc替换成交叉编译工具的gcc并添加编译选项和sysroot路径
sed -i "/using gcc/c using gcc : : $COMPILER_CC $COMPILER_FLAGS $COMPILER_SYSROOT ;" project-config.jam
./b2 install variant=release abi=aapcs address-model=32 architecture=arm binary-format=elf threading=multi toolset=gcc
3、编译结果
会生成头文件和动态、静态库。