【无标题】

VPP交叉编译方法(version:21.01)

转载

1.环境和条件:
1.1开发机:
CentOS Linux release 8.3.2011

Linux localhost.localdomain 4.18.0-240.22.1.el8_3.x86_64 #1 SMP Thu Apr 8 19:01:30 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux

1.2目标机:

Linux Switch 3.14.57_v1.0 #2 SMP Mon May 17 18:29:08 CST 2021 aarch64_be GNU/Linux

1.3工具链:
工具链下载地址:

https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-a/downloads

下载:

gcc-arm-10.2-2020.11-x86_64-aarch64_be-none-linux-gnu.tar.xz
在这里插入图片描述

1.4 VPP
1.版本:2101

2.下载源码:

git clone https://gerrit.fd.io/r/vpp

3.check稳定发行版本:2101

git checkout -b stable/2101 origin/stable/2101

2安装vpp依赖工具库等

make install-dep
make install-ext-dep

3交叉编译
3.1工具链准备
工具链拷贝到开发机上面解压后,交叉编译 libuuid、openssl,并将结果生成到工具链的libc/usr目录:

交叉编译 libuuid:libuuid-1.0.3.tar.gz

CC=“aarch64_be-none-linux-gnu-gcc” ./configure --host=x86_64 --prefix=/home/guoqixin/gcc-arm-10.2-2020.11-x86_64-aarch64_be-none-linux-gnu/aarch64_be-none-linux-gnu/libc/usr

交叉编译 openssl:openssl-OpenSSL_1_0_1e.tar.gz

CC=“aarch64_be-none-linux-gnu-gcc” ./config no-asm shared --prefix=/home/guoqixin/gcc-arm-10.2-2020.11-x86_64-aarch64_be-none-linux-gnu/aarch64_be-none-linux-gnu/libc/usr
在这里插入图片描述

去掉 Makefile 里面的 -m64 编译选项

3.2在vpp中指定工具链相关信息
在这里插入图片描述

vim vpp/src/CMakeLists.txt:

1.添加:必须在 project(vpp C) 前面添加:工具链路径根据自身情况做修改

#####################################################################

set(CMAKE_SYSTEM_NAME Linux)

set(CMAKE_SYSTEM_PROCESSOR aarch64)

set(CMAKE_SYSROOT /home/guoqixin/gcc-arm-10.2-2020.11-x86_64-aarch64_be-none-linux-gnu/aarch64_be-none-linux-gnu/libc)

set(tools /home/guoqixin/gcc-arm-10.2-2020.11-x86_64-aarch64_be-none-linux-gnu)

set(CMAKE_C_COMPILER ${tools}/bin/aarch64_be-none-linux-gnu-gcc)

set(CMAKE_CXX_COMPILER ${tools}/bin/aarch64_be-none-linux-gnu-g++)

set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)

set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)

set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)

set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)

#####################################################################

project(vpp C)

  1. 删除:删掉下面的 -Werror 编译选项

if (CMAKE_BUILD_TYPE)

set(CMAKE_C_FLAGS “-g -fPIC -Werror -Wall ${CMAKE_C_FLAGS}”)

endif()

3.3编译
make build-release

编译结果在:

vpp/build-root/install-vpp-native/vpp

4目标机
将编译结果:vpp/build-root/install-vpp-native/vpp目录打包,拷贝到目标机;

同时将工具链的:

gcc-arm-10.2-2020.11-x86_64-aarch64_be-none-linux-gnu/aarch64_be-none-linux-gnu/libc 目录打包拷贝到目标机

运行:

LD_LIBRARY_PATH=[工具链路径]/libc/lib64:[工具链路径]/libc/usr/lib64 [工具链路径]/libc/lib/ld-linux-aarch64_be.so.1 [vpp路径]/vpp/bin/vpp -c startup.conf

[工具链路径]/libc/lib64:用于指定工具链C库的搜索路径
[工具链路径]/libc/usr/lib64:用于指定工具链用户库(如前面编译的luuid、openssl库等)的搜索路径
5 各种编译问题处理
1、问题:

cmake: symbol lookup error: cmake: undefined symbol: archive_write_add_filter_zstd

解决办法:

yum remove libarchive*

wget https://github.com/libarchive/libarchive/releases/download/3.5.1/libarchive-3.5.1.tar.xz

tar -xvf libarchive-3.5.1.tar.xz

cd libarchive-3.5.1

./configure --prefix=/usr --disable-static && make

sudo make install

cd … && rm -rf libarchive-3.5.1 && rm libarchive-3.5.1.tar.xz

在这里插入图片描述

git tag -d v21.10-rc0

git tag -a v21.10-rc0 -m “v21.10-rc0”

git describe
————————————————
版权声明:本文为CSDN博主「guoqixin2008」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/guoqixin2008/article/details/122415704

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值