之前对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. tensorflow中的tf.app.run()的使用

    指明函数的入口,即从哪里执行函数. 如果你的代码中的入口函数不叫main(),而是一个其他名字的函数,如test(),则你应该这样写入口tf.app.run(test()) 如果你的代码中的入口函数叫 ...

  2. ARCSDE直连Oracle时出现错误Failed to connect to the specified server. Underlying DBMS error[ORA-12154: TNS:could not resolve the connect identifier specified. No extended error]

    买了新笔记本,装软件. 在ARCSDE直连Oracle时遇到问题. esri官网给的解释是因为安装arcgis时安装目录里有特殊字符(详见:https://support.esri.com/en/te ...

  3. [about remote controller]--mstsc-teamviewer-vnc,nomachine

    https://www.jianshu.com/p/c80db368ed8a https://www.nomachine.com/download Ubuntu安装VNC,VNC却无法随系统启动,遂换 ...

  4. [qemu][kvm] 在一个vmware虚拟机里安装qemu-kvm虚拟机

    说起来这个需求,简直是傻傻的.但却实实在在的摆在我的面前.... VM无外乎就是为了模拟场景:我现在要的场景就是一台很多个core的linux主机.但是我只有一个装了windows的笔记本.上边有一个 ...

  5. CSDN论坛 > Delphi > VCL组件开发及应用 DBLookupComboBox用法

    (1)DataSource属性    该属性用于连接要编辑数据的主表数据源(2)DataField属性    该属性用于指定要编辑的数据字段名(3)ListSource属性    .    该属性用于 ...

  6. LeetCode 226 Invert Binary Tree 解题报告

    题目要求 Invert a binary tree. 题目分析及思路 给定一棵二叉树,要求每一层的结点逆序.可以使用递归的思想将左右子树互换. python代码 # Definition for a ...

  7. Shiro 自定义角色 认证

    转载,原博文的地址在:https://ailongni.iteye.com/blog/2086022 由于Shiro filterChainDefinitions中 roles默认是and,/** = ...

  8. Servlet基本介绍和使用

    基本概念 Servlet又称为Java Servlet是一个基于java技术的web组件,运行在服务器端,用于生成动态的内容.Servlet是平台独立的java类,编写一个Servlet实际上就是按照 ...

  9. centos所有版本下载源

    http://ftp.sjtu.edu.cn/centos/7/isos/x86_64/CentOS-7-x86_64-DVD-1511.iso http://mirrors.yun-idc.com/ ...

  10. AT3611 Tree MST 点分治+最小生成树

    正解:点分治+最小生成树 解题报告: 传送门! 然后这题麻油翻译,,,所以这边的建议是先说下题意呢亲 所以题意大概就是说,给一棵n个节点的树,树上每个点都有个权值,然后构造一个完全图,(u,v)之间连 ...