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簡單了很多。

 

    1. #禁止更新內核
    2. exclude=kernel*
    1. # 禁止更新系統
    2. exclude=centos-release*

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM