dpdk源码编译安装--examples

本文介绍DPDK的安装路径配置及环境变量设置方法,包括如何解决找不到库文件的问题,通过修改PKG_CONFIG_PATH和LD_LIBRARY_PATH环境变量,确保DPDK正确安装并能够被编译器识别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. ninja install 安装路径

1.1  examples

/usr/local/share/dpdk/examples/

1.2  库,默认librte开头

lib/librte_*    ----->    /usr/local/lib64
drivers/librte_* ---->    /usr/local/lib64/dpdk/pmds-22.0

1.3 可执行文件头文件

app/dpdk-*                         to  /usr/local/bin
dpdk/usertools/dpdk-devbind.py 
dpdk/usertools/dpdk-pmdinfo.py 
dpdk/usertools/dpdk-telemetry.py 
dpdk/usertools/dpdk-hugepages.py 
app/test/dpdk-test                 to /usr/local/bin

kernel/linux/kni/rte_kni.ko        to /lib/modules/5.4.210-1.el7.elrepo.x86_64/extra/dpdk

dpdk/build/rte_build_config.h      to /usr/local/include
dpdk/drivers                             
dpdk/config/rte_config.h              
dpdk/lib/kvargs/rte_kvargs.h           
dpdk/lib/eal/x86/include/rte_atomic.h  
dpdk/lib/ring/rte_ring.h
dpdk/lib/telemetry/rte_telemetry.h 

dpdk/examples/*                     to /usr/local/share/dpdk/examples/       

dpdk/lib/eal/include/generic/rte_atomic.h to /usr/local/include/generic/

dpdk/build/meson-private/libdpdk-libs.pc    to /usr/local/lib64/pkgconfig
dpdk/build/meson-private/libdpdk.pc to 

2. 示例

进入安装目录下的examoles/hellowrold执行:

make
Makefile:14: *** "no installation of DPDK found". Stop.

查看Makefile文件,因为pkgconf没有找到,pc文件

pkg-configure会根据 PKG_CONFIG_PATH环境变量来查找.pc文件,从而确定编译时 需要的库和头文件的位置,PKG_CONFIG_PATH默认位置为/usr/lib/pkg-config文件夹

#pkg-config libdpdk --libs
    Package libdpdk was not found in the pkg-config search path.
    Perhaps you should add the directory containing `libdpdk.pc'
    to the PKG_CONFIG_PATH environment variable
    No package 'libdpdk' found

看到为找到libdpdk.pc文件,需要修改环境变量包含libdpdk.pc路径

执行: export PKG_CONFIG_PATH="/usr/local/lib64/pkgconfig/", export环境变量临时生效,

永久生效,需要通过修改.bashrc文件,添加环境变量;或者修改/etc/profile文件

执行: pkg-config libdpdk --libs                           
        -Wl,--as-needed -L/usr/local/lib64 -lrte_node -lrte_graph -lrte_flow_classify -lrte_pipeline -        lrte_table -lrte_pdump -lrte_port -lrte_fib -lrte_ipsec -lrte_vhost -lrte_stack -lrte_security -        lrte_sched -lrte_reorder -lrte_rib -lrte_dmadev -lrte_regexdev -lrte_rawdev -lrte_power -        lrte_pcapng -lrte_member -lrte_lpm -lrte_latencystats -lrte_kni -lrte_jobstats -lrte_ip_frag -        lrte_gso -lrte_gro -lrte_gpudev -lrte_eventdev -lrte_efd -lrte_distributor -lrte_cryptodev -        lrte_compressdev -lrte_cfgfile -lrte_bpf -lrte_bitratestats -lrte_bbdev -lrte_acl -lrte_timer -        lrte_hash -lrte_metrics -lrte_cmdline -lrte_pci -lrte_ethdev -lrte_meter -lrte_net -lrte_mbuf -        lrte_mempool -lrte_rcu -lrte_ring -lrte_eal -lrte_telemetry -lrte_kvargs  

关于pkg-config, 详细见如下连接:

http://t.zoukankan.com/lcw-p-3159506.html

修改完毕后执行: #make, 生成helloworld-shared可执行文件,找不到库

执行: ldd helloworld-shared 
        linux-vdso.so.1 =>  (0x00007fff711f6000)
        librte_eal.so.22 => not found
        libc.so.6 => /lib64/libc.so.6 (0x00007f09a9396000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f09a9764000)

执行: export LD_LIBRARY_PATH=LD_LIBRARY_PATH:/usr/local/lib64/, 同上,临时生效。

通常情况下,许多开源代码的程序或函数库都会默认将在即安装到/usr/local目录下的相应位置(如:/usr/local/bin 或 /usr/local/lib)以便于系统自身的程序或函数库相区别。而许多linux系统的/ect/ld.so.conf 文件中默认又不包含 /usr/local/lib 。因此出现安装了共享库,但是却无法找到共享库的情况。

因此,永久生效,需要到/etc/ld.so.conf.d/路径下添加包含此lib库路径文件,并执行 ldconfig ldconfig , 该命令用来刷新系统的共享库缓存,即 /etc/ld.so.cache 文件。为了减少共享库系统的库搜索时间,共享库系统维护了一个共享库so名称的缓存文件 /etc/ld.so.cache

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值