ubuntu 下编译安装DPDK

首先按照官方文档编译:

"A simple forwarding test with pcap PMD which works with any NIC (with performance penalties)"

Extract sources.

tar xf dpdk.tar.gz
cd dpdk

Enable pcap (libpcap headers are required).

make config T=x86_64-native-linuxapp-gcc
sed -ri 's,(PMD_PCAP=).*,\1y,' build/.config

Build libraries and test application (Linux headers may be needed with default config).

make

Reserve huge pages memory.

mkdir -p /mnt/huge
mount -t hugetlbfs nodev /mnt/huge
echo 64 > /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages

Run poll-mode driver test (with a cable between ports).

build/app/testpmd -c7 -n3 --vdev=eth_pcap0,iface=eth0 --vdev=eth_pcap1,iface=eth1 --
                  -i --nb-cores=2 --nb-ports=2 --total-num-mbufs=2048

testpmd> show port stats all

  ######################## NIC statistics for port 0  ########################
  RX-packets: 0          RX-errors: 0         RX-bytes: 0
  TX-packets: 0          TX-errors: 0         TX-bytes: 0
  ############################################################################

  ######################## NIC statistics for port 1  ########################
  RX-packets: 0          RX-errors: 0         RX-bytes: 0
  TX-packets: 0          TX-errors: 0         TX-bytes: 0
  ############################################################################

testpmd> start tx_first

testpmd> stop

  ---------------------- Forward statistics for port 0  ----------------------
  RX-packets: 2377688        RX-dropped: 0             RX-total: 2377688
  TX-packets: 2007009        TX-dropped: 0             TX-total: 2007009
  ----------------------------------------------------------------------------

  ---------------------- Forward statistics for port 1  ----------------------
  RX-packets: 2006977        RX-dropped: 0             RX-total: 2006977
  TX-packets: 2377720        TX-dropped: 0             TX-total: 2377720
  ----------------------------------------------------------------------------

  +++++++++++++++ Accumulated forward statistics for all ports+++++++++++++++
  RX-packets: 4384665        RX-dropped: 0             RX-total: 4384665
  TX-packets: 4384729        TX-dropped: 0             TX-total: 4384729
  ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
编译过程中需要安装libpcap库,安装步骤如下:

在linux系统下,安装只需要三步:1. ./configure;2. make;3. make install。

在按照这三部安装的过程中遇到了两个问题,是安装过程中出现的错误。这些错误是因为没有对应的工具。我把错误和解决办法罗列如下,和大家一起分享:

第一步,配置过程中出现这样的一个错误:./configure:error:Your operating system's lex is insufficient to compile libpcap.意思就是你的操作系统的词法分析器(lex)不足以编译libpcap。有关这个lex的详细资料大家可以百度一下。然后我查阅了资料,解决办法是需要安装一个flex,sudo apt-get install flex回车。安装这个后就可以通过了,生成Makefile文件以及其他配置文件。

第二步,make编译过程中也遇到了一个错误:make:yacc: 命令未找到。yacc(Yet Another Compiler Compiler)是unix/linux上用来生成编译器的编译器(编译器代码生成器)。yacc生成的编译器使用C语言写成的语法解析器(Parser),需要与词法分析器lex一起使用,再把两部分产生出来的C程序一并编译。解决这个问题的办法是:安装bison,关于bison的详细资料,这儿不啰嗦了。sudo apt-get install bison。还要注意一个问题,在编译的时候可能有一些文件有权限要求,所以最好使用sudo make命令。

第三步,make install 安装。这一步倒没出现问题。不过也最好使用sudo make install 吧。

接下来就是使用这个libpcap库了。

 

在安装成功后,接下来在使用该库编译或者执行编译之后的可执行文件时,或许还会遇到如下的问题:

1. 编译时:比如,

gcc  packet.o  -lpcap -lpthread  /* -lpcap是用于调用libpcap库的,所以不要忘了添加上。*/ /usr/local/lib/libpcap.so: undefined reference to `pcap_parse’ collect2: ld returned 1 exit status

对于这样的错误信息,首先确认一下是否安装了libpcap-dev,如果没有可以先安装一下:sudo apt-get install libpcap-dev;我尝试了一下安装这个以后问题并没有解决,但是我不确定下面的方法是不是和这一步有关系,我是先尝试这个方案,最后不行。

然后下面的解决的办法确实让人很难想到:重新安装libpcap库。进入解压后的库目录里,首先make clean,然后再从新安装一遍:1. ./configure;2. make;3. make install;问题就解决了。这个解决方法很难让我们想到,具体是什么原因,还待研究。

2. 执行时:比如,

编译通过后生成可执行文件:a.out,然后再终端里执行:sudo ./a.out,出现如下错误信息:

error while loading shared libraries: libpcap.so.1: cannot open shared object file: No such file or directory

解决办法是:将/usr/lib/libpcap.so库文件改一下名字,改成libpcap.so.1就可以了。当然也可以为libpcap.so.1建一个软连接:ln  -s /usr/lib/libpcap.so  /usr/lib/libpcap.so.1;这样问题就解决了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值