makefile - 构建 igb_uio 时的 DPDK 编译错误

标签 makefile centos6 dpdk

我正在尝试在 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

我已经在这里看到并尝试了解决方案:

Intel DPDK Compilation Error

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。

更新:

在 ^ 上方添加了详细输出

最佳答案

刚刚解决了:

我使用的是内核版本 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。

希望这可以帮助其他有同样问题的人。

关于makefile - 构建 igb_uio 时的 DPDK 编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31271227/

相关文章:

makefile - 如何预处理makefile

makefile - `make` 没有注意到 Rust 模块中的修改 - 如何更好地将 Rust 集成到构建中?

Linux:当硬盘空间不足时如何接收来自服务器的警告电子邮件?

python-2.7 - 没有名为 os.path : wrong Python being called by bash 的模块

c - 具有高日志级别的 dpdk mbuf 和 mempool 消息

在 PHP_NEW_EXTENSION 中有多个源文件的 phpize 的 config.m4 生成一个什么都不做的 Makefile

c - 使用 Visual HAM 在 C 中进行 GBA 编程

linux - 在 centos 64 位上导入 cv2

c - 从 Rust FFI 访问 DPDK 中的静态 C 函数

c - 如何在DPDK中生成增量数据值