前言
在交叉编译frr过程中,需要首先交叉编译其依赖库libyang。libyang是一个库,用于实现YANG语言所定义的schema(模式)和数据的处理。该库使用C语言在GNU/Linux平台上实现,并提供C API。本文介绍了libyang的交叉编译流程,编译环境如下:
主机操作系统:Ubuntu 20.04 LTS
主机处理器架构:X86-64
目标处理器架构:arm64
交叉编译工具:gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu
1. pcre2交叉编译
pcre2采用CMAKE进行编译,可以在Github上下载源码:
git clone https://github.com/PCRE2Project/pcre2.git
进入pcre2目录,编译命令如下:
export HOST_ARCH=aarch64-linux-gnu
export PCRE2_INCLUDE_DIRS=/usr/aarch64-linux-gnu
mkdir build
cd build
CC=${HOST_ARCH}-gcc \
CXX=${HOST_ARCH}-g++ \
cmake \
-DCMAKE_INSTALL_PREFIX:PATH=/usr/${HOST_ARCH} \
..
make && sudo make install
2. xxHash交叉编译
xxHash也采用CMAKE进行编译,可以在Github上下载源码:
git clone https://github.com/Cyan4973/xxHash.git
进入xxHash所在目录:
export HOST_ARCH=aarch64-linux-gnu
mkdir build
cd build
CC=${HOST_ARCH}-gcc \
CXX=${HOST_ARCH}-g++ \
cmake \
-S build/cmake -B cmake_build \
-DCMAKE_INSTALL_PREFIX:PATH=/usr/${HOST_ARCH}
cmake --build cmake_build --parallel
sudo cmake --install cmake_build
3. libyang的交叉编译
libyang采用CMAKE进行编译,可以在Github上下载源码:
git clone https://github.com/CESNET/libyang.git
进入libyang所在目录:
export HOST_ARCH=aarch64-linux-gnu
mkdir build
cd build
CC=${HOST_ARCH}-gcc \
CXX=${HOST_ARCH}-g++ \
cmake \
-DCMAKE_INSTALL_PREFIX:PATH=/usr/${HOST_ARCH} \
-DENABLE_LYD_PRIV=ON \
..
make && sudo make install