centos 6.x下编译dpdk 16.7 心得
之前对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简单了很多。
- #禁止更新内核
- exclude=kernel*
- # 禁止更新系统
- exclude=centos-release*
centos 6.x下编译dpdk 16.7 心得的更多相关文章
- 不要着急改代码,先想想--centos 6.8下编译安装tmux
诸位读者新年好,2017开年第一篇博客,请允许我先问候一下看到这篇博客的诸位.写博客是我2017年定下的目标之一,希望我会坚持下去. 最近打算尝试一下tmux这个神器,于是有了这一篇关于思维方式的Bl ...
- CentOS 6.4下编译安装MySQL 5.6.14
概述: CentOS 6.4下通过yum安装的MySQL是5.1版的,比较老,所以就想通过源代码安装高版本的5.6.14. 正文: 一:卸载旧版本 使用下面的命令检查是否安装有MySQL Server ...
- CentOS 6.4下编译安装MySQL 5.6.14 (转)
CentOS 6.4下通过yum安装的MySQL是5.1版的,比较老,所以就想通过源代码安装高版本的5.6.14. 正文: 一:卸载旧版本 使用下面的命令检查是否安装有MySQL Server rpm ...
- 0622 CentOS 6.4下编译安装MySQL 5.6.14
转自http://www.cnblogs.com/xiongpq/p/3384681.html 概述: CentOS 6.4下通过yum安装的MySQL是5.1版的,比较老,所以就想通过源代码安装高版 ...
- Centos 7环境下编译mysql 5.7
首先在编译之前,我们要了解相关mysql 5.7的编译选项,官网编译选项地址:http://dev.mysql.com/doc/refman/5.7/en/source-configuration-o ...
- CentOS 6.4下编译安装MySQL 5.6.16
一.卸载旧版本号MySql 1.rpm卸载: 1> 检查安装包: rpm -qa | grep mysql 2> 普通删除: rpm -e mysql-5.6.16.rpm 3> 强 ...
- [转][linux][centos]嵌入式 Linux下编译并使用curl静态库
#x86 ./configure --disable-shared --enable-static --disable-ftp --disable-ipv6 --disable-rtsp --disa ...
- CentOS 6.6x64下编译gcc-4.7.4
最近使用老版本的gcc发现一些问题,于是想尝试升级. 看了一些教程之后进行尝试,发现各类教程均会有一些小问题,于是在此记录一下本人的过程. 编译过程中参考的文章有如下几篇,在此表示感谢: http:/ ...
- 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 ...
随机推荐
- Shell----简单整理
------------------------------------------------------------------Shell脚本--------------------------- ...
- 这些简单实用的Word技巧,你get了吗
快速选中多个对象 如果需要将某些文本设置成相同的格式,我们不需要一个个的设置,只要选中多个文本然后一起设置就可以了. 单击开始——选择编辑——选择——选择格式相似的文本 快速清除所有格式 那么当我们不 ...
- hdu3746 Cyclic Nacklace【nxt数组应用】【最小循环节】
Cyclic Nacklace Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)T ...
- okvis论文解读
C. Keypoint Matching and Keyframe Selection 我们的处理流程采用定制的多尺度SSE优化Harris角点检测器与BRISK描述符提取相结合[12].检测器通过逐 ...
- [No0000137]字符编码详解
摘要 本文主要介绍了字符编码的基础知识,以及常见的字符编码类型,比如ASCII,Unicode,UTF-8,ISO 8859等,以及各种编码之间的关系,同时专门解释了中文字符相关的编码标准,包括GB2 ...
- Vue 超快速学习
Vue 超快速学习 基础知识: 1.vue的生命周期: beforeCreate/created. beforeMount/mounted. beforeUpdate/updated. beforeD ...
- vue 错误分析
1 点击事件发生的错误 原因是,重复触发事件函数导致 改为不一样的名字即可 2 提示 : “ vuex] Expects string as the type, but found undef ...
- 解决GP服务产生的结果无法自动发布为地图服务的问题
在ArcGIS for Javascript API或REST API调用GP服务时,常常会遇到这样一种情况:GP服务运行以后,执行成功,也能够生成结果,然而结果并没有直接产生动态的地图服务供API调 ...
- cocoapod引入FLEX,debug模式正常,Release报错library not found for -lXXX
cocoapod引入FLEX,debug模式正常,Release报错library not found for -lXXX, 因为podfile是这么写的: pod 'FLEX', '~> 2. ...
- 【数据可视化-pyecharts】pyecharts快速入门
pyecharts快速开始 首先开始来绘制你的第一个图表 from pyecharts import Bar bar = Bar("我的第一个图表", "这里是副标题&q ...