4

KVM で実行されている CentOS 6.4 VM で DPDK サンプル アプリケーションをテストしようとしていますが、DPDK をコンパイルできません。

走ろうとすると

make install T=x86_64-default-linuxapp-gcc -n

DPDK-2.0.0 から、次の出力が得られます。

[...]    
make S=lib/librte_eal/linuxapp -f /home/dpdk-1.6.0r2/lib/librte_eal/linuxapp/Makefile -C /home/dpdk-1.6.0r2/x86_64-default-linuxapp-gcc/build/lib/librte_eal/linuxapp all
[ -d /home/dpdk-1.6.0r2/x86_64-default-linuxapp-gcc/build/lib/librte_eal/linuxapp/igb_uio ] || mkdir -p /home/dpdk-1.6.0r2/x86_64-default-linuxapp-gcc/build/lib/librte_eal/linuxapp/igb_uio
echo "== Build lib/librte_eal/linuxapp/igb_uio"
make S=lib/librte_eal/linuxapp/igb_uio -f /home/dpdk-1.6.0r2/lib/librte_eal/linuxapp/igb_uio/Makefile -C /home/dpdk-1.6.0r2/x86_64-default-linuxapp-gcc/build/lib/librte_eal/linuxapp/igb_uio all
if [ ! -f igb_uio.c ]; then ln -nfs /home/dpdk-1.6.0r2/lib/librte_eal/linuxapp/igb_uio/igb_uio.c . ; fi
if [ ! -f Makefile ]; then ln -nfs /home/dpdk-1.6.0r2/lib/librte_eal/linuxapp/igb_uio/Makefile . ; fi
make -C /lib/modules/2.6.32-358.el6.x86_64/build M=/home/dpdk-1.6.0r2/x86_64-default-linuxapp-gcc/build/lib/librte_eal/linuxapp/igb_uio O=/lib/modules/2.6.32-358.el6.x86_64/build \
CROSS_COMPILE=
make: *** /lib/modules/2.6.32-358.el6.x86_64/build: No such file or directory.  Stop.
make[7]: *** [igb_uio.ko] Error 2
make[6]: *** [igb_uio] Error 2
make[5]: *** [linuxapp] Error 2
make[4]: *** [librte_eal] Error 2
make[3]: *** [lib] Error 2
make[2]: *** [all] Error 2
make[1]: *** [x86_64-native-linuxapp-gcc_install] Error 2
make: *** [install] Error 2

ここで指定されている必要なパッケージをすべてインストールしました。

http://dpdk.org/doc/guides/linux_gsg/sys_reqs.html

そして、私はここで解決策を見て試しました:

インテル DPDK コンパイル エラー

この問題は、DPDK2-0.0 と 1.6.0 の両方で発生します。

また、念のため; ランニング

ls /lib/modules/2.6.32-358.el6.x86_64/build

出力を返します:

/lib/modules/2.6.32-358.el6.x86_64/build

したがって、ディレクトリは間違いなく存在します..

同じホスト上の CentOS 6.6 KVM で DPDK を問題なくコンパイルできましたが、今回はこのエラーが発生し続けます。

残念ながら、CentOS 6.4 である必要もあります。

アップデート:

上記の詳細出力を追加しました ^

4

2 に答える 2

5

ちょうどそれを解決しました:

私はカーネル バージョン 2.6.32-358.el6.x86_64 を使用していましたが、このエラーを取り除くにはバージョン 2.6.32-504.23.4 .el6.x86_64に更新する必要がありました。

さらに、この後に次の行を含む別のエラーが発生しました

previous definition of ‘skb_set_hash’ was here

これは、私が使用していた DPDK バージョン (1.6) の問題が原因で発生しました。2.0 を試すと、これが修正されました。

次に、setup.sh スクリプトのモジュール関連のオプションを実行すると、次のエラーが発生しました。

Traceback (most recent call last):
  File "tools/dpdk_nic_bind.py", line 536, in <module>
    main()
  File "tools/dpdk_nic_bind.py", line 532, in main
    get_nic_details()
  File "tools/dpdk_nic_bind.py", line 225, in get_nic_details
    dev_lines = check_output(["lspci", "-Dvmmn"]).splitlines()
  File "tools/dpdk_nic_bind.py", line 120, in check_output
    stderr=stderr).communicate()[0]
  File "/usr/lib64/python2.6/subprocess.py", line 642, in __init__
    errread, errwrite)
  File "/usr/lib64/python2.6/subprocess.py", line 1234, in _execute_child
    raise child_exception
OSError: [Errno 2] No such file or directory

このエラーは、pciutils がインストールされておらず、スクリプトが lspci を見つけられなかったためです。

これが同じ問題を抱えている他の人に役立つことを願っています。

于 2015-07-09T15:54:27.153 に答える