ubuntu 下编译安装DPDK安装出现问题并解决


首先按照官方文档编译:
tar xf dpdk.tar.gz
cd dpdk

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

make

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

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


编译过程中需要安装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;这样问题就解决了。
已邀请:

要回复问题请先登录注册