編譯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++