如何解决testpmd 无法运行,因为缺少 librte_pmd_bond.so
我已经使用 x86_64-native-linuxapp-gcc 和选项在 Centos 7 上构建并安装了 DPDK v.18.11.9:
CONFIG_RTE_BUILD_SHARED_LIB=y
我们想运行 testpmd 但它无法加载:
$ ./x86_64-native-linuxapp-gcc/app/testpmd
./x86_64-native-linuxapp-gcc/app/testpmd: error while loading shared
libraries: librte_pmd_bond.so.2.1: cannot open shared object file: No such file or directory
这是预期的,因为 lib/ 不包含 librte_pmd_bond.so。
我应该使用哪些构建选项来构建这个库?
最好的问候 大卫
解决方法
当忘记将应用程序指向库路径时,这是一个常见错误。当使用共享模式构建 DPDK 库时,必须通过 LD_LIBRARY_PATH
指定 dpdk 共享对象的路径。如果没有这样做,我们会得到
# ldd app/testpmd
linux-vdso.so.1 (0x00007fff3eeb2000)
librte_pmd_bond.so.2.1 => not found
librte_pmd_dpaa.so.1.1 => not found
librte_pmd_ixgbe.so.2.1 => not found
librte_pmd_i40e.so.2.1 => not found
librte_pmd_bnxt.so.2.1 => not found
librte_pmd_softnic.so.1.1 => not found
librte_pdump.so.2.1 => not found
librte_metrics.so.1.1 => not found
librte_bitratestats.so.2.1 => not found
librte_latencystats.so.1.1 => not found
librte_bpf.so.1.1 => not found
librte_gro.so.1.1 => not found
librte_gso.so.1.1 => not found
librte_mbuf.so.4.1 => not found
librte_net.so.1.1 => not found
librte_ethdev.so.11.1 => not found
librte_mempool.so.5.1 => not found
librte_ring.so.2.1 => not found
librte_eal.so.9.1 => not found
librte_cmdline.so.2.1 => not found
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f1474089000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f1473c98000)
/lib64/ld-linux-x86-64.so.2 (0x00007f14745cf000)
从而运行我们得到的应用
# ./app/testpmd
./app/testpmd: error while loading shared libraries: librte_pmd_bond.so.2.1: cannot open shared object file: No such file or directory
要修复错误,如上所述使用
export LD_LIBRARY_PATH=[path to dpdk shared libraries]
这解决了依赖关系和应用程序运行。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。