最近新研发的板子架构不一样,是aarch64架构的,有些库要重新编译,Boost库比较常用,网上的编译流程并不是很详细,特此记录一下。
先说一下x86_64平台上的,推荐直接用apt下载dev包,方便快捷。
sudo apt install libboost-all-dev
想要编译也很简单, 下载解压源码,进入源码目录
./bootstrap.sh --with-libraries=all --with-toolset=gcc
最后就是aarch64架构的交叉编译了,这里会介绍得详细一点。
1. 下载交叉编译工具链
- 自动下载
sudo apt-get install gcc-aarch64-linux-gnu
- 源码使用
下载链接: Linaro Releases
2. 将交叉编译工具设置到环境变量(或者后面可以直接使用绝对路径)
export PATH="/home/liyongjiang/ctools/gcc-linaro-7.5.0-2019.12_x86_64_aarch64-linux-gnu/bin:$PATH"
3. 准备想要的其他库依赖
Boost很全面,但是交叉编译的时候并不会将所有的库编译上,有些库需要外部添加,比如zlib、icu
- zlib库编译
版本: 1.2.13
../configure --prefix=/home/liyongjiang/lib_compile/aarch64_gcc_7.5.0/zlib --enable-shared
- icu编译
版本:74.1
# 进入源码目录
mkdir icubuild && cd icubuild
# 运行source目录下的runConfigureICU
../icu4c/source/runConfigureICU Linux/gcc
make
# 在进入到source目录
cd ../icu4c/source
# --with-cross-build 填写刚才make的目录, 需要绝对路径
./configure CXXFLAGS=-std=c++11 --host=aarch64-linux-gnu --build=x86_64-linux-gnu --target=aarch64-linux-gnu --prefix=/home/liyongjiang/lib_compile/aarch64_gcc_7.5.0/ICU --with-cross-build=/home/liyongjiang/lib_compile/icu-release-74-2/icubuild --disable-samples --disable-tests CC=aarch64-linux-gnu-gcc CXX=aarch64-linux-gnu-g++ AR=aarch64-linux-gnu-ar
4. 编译
- 在源码目录下先执行 ./booststarp.sh
- 编辑 project-config.jam

- 所有的模块功能也不是全部开启的,在执行编译命令后可以看到那些库使能了,哪些库没有使能,可以按需开启,比如这里用到的 regex、data_time等。
./b2 install --prefix=/home/liyongjiang/lib_compile/aarch64_gcc_7.5.0/boost --with-system --with-filesystem --with-iostreams --with-regex --with-thread --with-date_time -s ZLIB_INCLUDE=/home/liyongjiang/lib_compile/aarch64_gcc_7.5.0/zlib/include -s ZLIB_LIBPATH=/home/liyongjiang/lib_compile/aarch64_gcc_7.5.0/zlib/lib -s ICU_INCLUDE=/home/liyongjiang/lib_compile/aarch64_gcc_7.5.0/ICU/include -s ICU_LIBPATH=/home/liyongjiang/lib_compile/aarch64_gcc_7.5.0/ICU/lib architecture=arm link=shared threading=multi -j4
- 检查编译出来的库文件架构是否正确


5865

被折叠的 条评论
为什么被折叠?



