編譯dpdk報錯,以及kernel-devel與內核版本不一致的解決辦法

編譯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++
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章