VPP的源码编译安装

最近在虚拟机上搞vpp的编译安装,遇到很多问题,先记录下来。。。。。。

vpp编译一定要联网,切记!!!不联网的话一个个的依赖包会让你怀疑人生的。

1.源码获取

git clone https://gerrit.fd.io/r/vpp,获取当前最新代码

2.安装各种软件依赖包

源码获取后,假设放在/home目录下

cd /home/vpp

执行make后,会出现很多选项,先执行mke install-dep来安装各种软件依赖包。需要几分钟的时间下载安装。

3.清除之前编译残留(如果是第一次编译安装,可以忽略)

执行make wipe或者是make wipe-release

4.执行编译

执行make build或者是make build-release(推荐带release编译)

5.生成、安装rpm包

编译完成后,可以直接执行make run来查看vpp框架是否可以正常运行。然后执行make pkg-rpm。完成后进入bulid-root目录,在此目录下安装生成的全部rpm包.rpm -ivh *rpm。

6.配置启动配置文件

配置文件在/etc/vpp目录下

7.运行vpp

./home/vpp/build-root/install-vpp-native/vpp/vpp -c /etc/vpp/startup.conf

 

遇到的问题:

1.关于dpdk的编译。

查看网上的资料,在执行make build的时候会自动下载dpdk源码并进行编译。确实会下载dpdk的源码,但是不确定是不是会编译。如果编译成功的话会生成igb_uio.ko文件,但是并没有生成该文件。我查看系统巨页的时候发现巨页已经配置好了,不知道是不是centos7.6已经默认启动巨页。我用下载好的dpdk源码进行编译,可以生成igb_uio.ko文件。执行make build后,会发现存在x86_64-native-linuxapp-gcc这个目录,但是没有kmod这个文件夹。而用源码编译后会有kmod文件夹,里面有生成的igb_uio.ko文件。非常不解。

2.make后面有个选项是install-ext-deps,我执行该命令后也会下载dpdk的源码和一个rpm包。暂不了解这个rpm包有什么用。

3.运行vpp后,键入show int,会出现本地环回口已经被dpdk接管的网卡。被Linux内核控制的网卡没有显示。不知道是不是因为没有安装相关的插件。还有一点,网卡的状态是down,不知道怎么up该网卡。

### VPP交叉编译教程 VPP(Vector Packet Processing)是一种高性能数据平面开发套件,通常用于网络功能虚拟化(NFV)环境。为了在不同的目标平台上部署VPP,需要进行交叉编译。以下是关于VPP交叉编译的相关信息和指南[^1]。 #### 1. 环境准备 在开始交叉编译之前,确保主机系统已安装必要的工具链和依赖项。例如,对于ARM架构的目标平台,可能需要安装`gcc-arm-linux-gnueabi`等工具链。此外,还需要安装以下软件包: ```bash sudo apt-get install build-essential cmake git libnuma-dev ``` #### 2. 获取VPP源码 从官方仓库克隆VPP的源代码: ```bash git clone https://gerrit.fd.io/r/vpp cd vpp ``` 确保检出所需的版本或分支[^2]。 #### 3. 配置交叉编译环境 创建一个配置文件来指定交叉编译工具链。例如,可以创建一个名为`build-root/config.env`的文件,并添加以下内容: ```bash export CC=arm-linux-gnueabihf-gcc export CXX=arm-linux-gnueabihf-g++ export LD=arm-linux-gnueabihf-ld export AR=arm-linux-gnueabihf-ar export RANLIB=arm-linux-gnueabihf-ranlib ``` 根据目标平台的具体需求调整工具链路径和名称[^3]。 #### 4. 编译VPP 使用CMake生成构建文件,并执行交叉编译: ```bash mkdir build && cd build cmake -DCMAKE_TOOLCHAIN_FILE=../build-root/toolchain.cmake .. make -j$(nproc) ``` 此处的`toolchain.cmake`文件应包含交叉编译工具链的配置信息[^4]。 #### 5. 验证编译结果 完成编译后,可以在`build`目录下找到生成的二进制文件。使用`file`命令检查二进制文件是否为目标架构: ```bash file build-root/install-vpp-native/vpp/bin/vpp ``` 输出应显示目标架构,例如`ARM`或`x86_64`[^5]。 #### 注意事项 - 确保目标平台的库和头文件与主机系统的版本兼容。 - 如果遇到依赖项问题,可能需要手动下载并交叉编译相关库。 ```python # 示例:验证Python脚本是否能加载交叉编译的动态库 import ctypes lib = ctypes.CDLL("path/to/cross-compiled-library.so") print(lib.some_function()) ```
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值