之前对dpdk编译了解得较少,之前直接就把centos yum update了,造成测试经理部署的centos 6.5升级为6.9,造成dpdk编译出错。

先说说centos 6.9下编译的心得:

1. 安装DPDK,解压缩DPDK

2.配置编译 config/common_base CONFIG_RTE_BUILD_SHARED_LIB =y

3.编译
gcc 版本需要用 4.4.7的来编译,208开发机上的/usr/bin/gcc是这个版本,/opt/rh...下和/usr/local/gcc-6.x ..下的gcc版本太高了,是不能编译dpdk16.04这个版本的。如果不是4.4.7这个版本,可以:
export PATH=/usr/bin:$PATH 来指定gcc用/usr/bin/gcc这个版本。

尝试过用高版本的来编译,提示说不存在compiler-gcc5.h,把compiler-gcc5.h拷贝到类似于/usr/src/kernels/2.6.32-696.10.1.el6.x86_64/include/linux
这样的目录下,但是因为部分dpdk代码不规范,高版本的会发现更多的错误。

用4.4.7这个编译,发现KNI模块提示出错,原因在http://dev.dpdk.narkive.com/Tmz3Gv1z/dpdk-dev-can-t-build-dpdk-16-04-on-centos-6-8 给出了答案。根据http://www.jianshu.com/p/bc2bde0e4442,我们可以禁掉KNI模块,否则按照前一个链接,需要编译内核,比较麻烦。修改config/。这个问题,dpdk QQ开发群也有同感:“是的,6.5可以,升级以后各种问题。”

近点KNI,需要修改文件,config/common_linuxapp,搜索关键字“KNI”,置为“n”。

主要问题是CentOS 6.x太老了,dpdk官方懒得全面支持。

运行/tools/dpdk-setup.sh 选择x86_64-native-linuxapp-gcc (avx 指令不支持)
#
# Compile librte_acl
#
CONFIG_RTE_LIBRTE_ACL=n
CONFIG_RTE_LIBRTE_ACL_DEBUG=n
重新编译DPDK 重新编译应用程序

编译完,说编译成功,但是“Installation cannot run with T defined and DESTDIR undefined”,提示你没有指定安装路径,这里我们只需要编译,本来也不需要安装,所以忽略,不影响使用。

按照http://dpdk-docs.readthedocs.io/en/latest/linux_gsg/sys_reqs.html#dpdk 这个网页,说要求Kernel version >= 2.6.34,我们的centos6.x都是2.6.32的内核,不符合要求。这个问题有待以后研究。

调整过参数(disable KNI和ACL)的dpdk 16.07.02在这里: https://192.168.1.91/svn/sourceev/trunk/dpdk-16.07.2-adjustParmeter.tar.gz
ACL是针对特定网卡禁掉的,别的网卡未必需要对acl禁掉。

2. 当然最简单的方式是启动时,回退到原来的内核版本。修改/boot/grub/grub.conf,把default改为6.5的那个内核(2.32-431...)。

如果原来没有原来的内核,可以参考https://iforday.com/86.html,来安装6.5的内核。

后来,发现内核更新后,程序没法跑,不能确定是程序的问题,还是dpdk的问题。

禁止内核更新,需要这么做。

方法如下:

  方法1:

  # vim /etc/yum.conf

  exclude=kernel*

  在 [main]配置段下,追加或修改以上内容。

  可通过下面的命令查看是否生效:

  # yum update | grep -i kernel

  方法2:

  在yum命令行中加上-x参数,来跳过指定的更新。如:

  # yum -x ‘kernel*’ update

  Linux禁止系统内核Kernel升级的方法就介绍到这里了,方法2是通过在yum命令行中加入参数来实现的,相较于方法1简单了很多。

    1. #禁止更新内核
    2. exclude=kernel*
    1. # 禁止更新系统
    2. exclude=centos-release*

centos 6.x下编译dpdk 16.7 心得的更多相关文章

  1. 不要着急改代码,先想想--centos 6.8下编译安装tmux

    诸位读者新年好,2017开年第一篇博客,请允许我先问候一下看到这篇博客的诸位.写博客是我2017年定下的目标之一,希望我会坚持下去. 最近打算尝试一下tmux这个神器,于是有了这一篇关于思维方式的Bl ...

  2. CentOS 6.4下编译安装MySQL 5.6.14

    概述: CentOS 6.4下通过yum安装的MySQL是5.1版的,比较老,所以就想通过源代码安装高版本的5.6.14. 正文: 一:卸载旧版本 使用下面的命令检查是否安装有MySQL Server ...

  3. CentOS 6.4下编译安装MySQL 5.6.14 (转)

    CentOS 6.4下通过yum安装的MySQL是5.1版的,比较老,所以就想通过源代码安装高版本的5.6.14. 正文: 一:卸载旧版本 使用下面的命令检查是否安装有MySQL Server rpm ...

  4. 0622 CentOS 6.4下编译安装MySQL 5.6.14

    转自http://www.cnblogs.com/xiongpq/p/3384681.html 概述: CentOS 6.4下通过yum安装的MySQL是5.1版的,比较老,所以就想通过源代码安装高版 ...

  5. Centos 7环境下编译mysql 5.7

    首先在编译之前,我们要了解相关mysql 5.7的编译选项,官网编译选项地址:http://dev.mysql.com/doc/refman/5.7/en/source-configuration-o ...

  6. CentOS 6.4下编译安装MySQL 5.6.16

    一.卸载旧版本号MySql 1.rpm卸载: 1> 检查安装包: rpm -qa | grep mysql 2> 普通删除: rpm -e mysql-5.6.16.rpm 3> 强 ...

  7. [转][linux][centos]嵌入式 Linux下编译并使用curl静态库

    #x86 ./configure --disable-shared --enable-static --disable-ftp --disable-ipv6 --disable-rtsp --disa ...

  8. CentOS 6.6x64下编译gcc-4.7.4

    最近使用老版本的gcc发现一些问题,于是想尝试升级. 看了一些教程之后进行尝试,发现各类教程均会有一些小问题,于是在此记录一下本人的过程. 编译过程中参考的文章有如下几篇,在此表示感谢: http:/ ...

  9. CentOS 6.4下编译安装 gcc-4.8.0(转)

    转:http://www.centoscn.com/image-text/install/2014/0807/3454.html 1.首先下载源代码 wget http://ftp.gnu.org/g ...

随机推荐

  1. VBS数组导出到Excel

    <script language="vbscript"> dim arr(9999,4) for i=0 to 9999 for j = 0 to 4 arr(i,j) ...

  2. tsm 切记

    切记不可删除节点,如果删除下面带的数据也会删除

  3. 洛谷P1908 逆序对【递归】

    题目:https://www.luogu.org/problemnew/show/P1908 题意:给定一个数组,求逆序对个数. 思路: 是一个很经典的题目了.通过归并排序可以求逆序对个数. 现在有一 ...

  4. 开发人员如何从官网首页进入下载JDK历史版本

    就是下面的这篇文章,好心好意提交到百度经验,希望给需要的人一个帮助,结果被拒,说有广告.呵呵,oracle和java真的需要在你百度上面做广告吗?倒是能理解,可能是外行人做的,只是看到链接就拒了,但是 ...

  5. [No0000147]深入浅出图解C#堆与栈 C# Heap(ing) VS Stack(ing)理解堆与栈4/4

    前言   虽然在.Net Framework 中我们不必考虑内在管理和垃圾回收(GC),但是为了优化应用程序性能我们始终需要了解内存管理和垃圾回收(GC).另外,了解内存管理可以帮助我们理解在每一个程 ...

  6. shell之awk面试小案例

    [root@chavinking mnt]# cat textfile chavinking 1 2 3 4 5 6 nope 1 2 3 4 5 6 [root@chavinking mnt]# c ...

  7. Python:多线程

    据廖雪峰老师的学习文档介绍,高级语言通常都内置多线程的支持,Python也不例外,并且,Python的线程是真正的Posix Thread,而不是模拟出来的线程. Python的标准库提供了两个模块: ...

  8. ASP.NET MVC 母版页

    为什么使用母版页?为了整个站点样式统一,任何WEB应用程序都应该使用母版页.MVC框架中,有新的方式为母版页传递数据.       一个WEB应用程序可以包含多个母版页,母版页用于定义页面布局,它与普 ...

  9. arcgis二次开发遇到System.Runtime.InteropServices.COMException (0x80040228) :异常来自HRESULT:0x80040228

    出现此问题只需要在控件上拖入一个LicenseControl就可以了 参考资料:http://yaogu.blog.163.com/blog/static/1849990662012101283256 ...

  10. ORACLE监听配置及测试实验

    实验一: 修改db_domain和service_name 我们将Db_name和Db_domain两个参数用'.'连接起来,表示一个数据库,并将该数据库的名称称为Global_name即等于serv ...