编译dpdk-1.8时候报错
‘PCI_MSIX_ENTRY_CTRL_MASKBIT’ undeclared (first use in this function)
原因是安装服务器操作系统centos6.5的时候装的是简化版,不带开发环境包
ls /usr/src/kernels/
显示为空
于是直接在线安装了kernel-devel和gcc。
下面的做法是错误的:
sudo yum install “kernel-devel-uname-r == $(uname -r)”
会提示找不到 kernel-devel-2.6.32-431.el6.x86_64.rpm,去kernel-devel的站点也没有这个版本了。
sudo yum install kernel-devel
安装的是kernel-devel-2.6.32-745.el6.x86_64.rpm,于是安装完后再装gcc,编译就会报这个错,内核开发环境和内核版本不一致。
只能卸载kernel-devel,重新装和内核版本一致的开发环境。可能也不需要卸载,再装一个就可以;但会报有更高的版本,安装不了;实际上是可以多个kernel-devel版本并存的。需要先装低版本再装高版本,然后需要使用哪个版本的话再执行以下操作,我是全部删掉了之前的内核开发环境。
#cd /lib/modules/2.6.32-431.el6.x86_64
#ln -s ../../../usr/src/kernels/2.6.32-431.el6.x86_64 build
#ln -s build source
正确的安装步骤:
1、查看和下载kernel-devel版本
#uname -a
查看内核的版本为:
Linux bogon 2.6.32-431.el6.x86_64 #1 SMP Fri Nov 22 03:15:09 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
下载内核开发环境rpm安装包,google一个可下载的rpm包:
#wget ftp://ftp.pbone.net/mirror/ftp.scientificlinux.org/linux/scientific/6.0/x86_64/updates/security/kernel-devel-2.6.32-431.el6.x86_64.rpm
2、查看是否已经安装了内核开发环境包:
#uname -a ; rpm -qa kernel\* | sort
kernel-2.6.32-431.el6.x86_64
kernel-devel-2.6.32-745.el6.x86_64
kernel-firmware-2.6.32-745.el6.noarch
之前使用yum instaill直接安装的kernel-devel版本跟内核版本对不上,如果已经安装了执行:
#yum remove kernel-devel-2.6.32-745.18.2.el6.x86_64
卸载安装
3、安装下载好的内核版本对应的开发包:
#rpm -ivh kernel-devel-2.6.32-431.el6.x86_64.rpm
4、安装gcc和g++
#yum install gcc
#yum install gcc-c++