构建时 DPDK 编译错误 igb_uio
DPDK Compilation Error When Building igb_uio
我正在尝试在 CentOS 6.4 VM 运行ning 下的 KVM 中测试 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
returns 输出:
/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。
希望这对遇到同样问题的其他人有所帮助。
在编译DPDK时,你需要有依赖包,并且你必须有相同内核版本的内核头文件。如果您不安装内核头文件,则“/lib/modules/your-kernel-version/build”文件夹无效,否则它是有效的。
我正在尝试在 CentOS 6.4 VM 运行ning 下的 KVM 中测试 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
returns 输出:
/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。
希望这对遇到同样问题的其他人有所帮助。
在编译DPDK时,你需要有依赖包,并且你必须有相同内核版本的内核头文件。如果您不安装内核头文件,则“/lib/modules/your-kernel-version/build”文件夹无效,否则它是有效的。