首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未能使用meson依赖项()指令静态地链接到dpdk

未能使用meson依赖项()指令静态地链接到dpdk
EN

Stack Overflow用户
提问于 2022-10-28 16:28:13
回答 1查看 127关注 0票数 0

我试图使用meson来构建dpdk的helloworld示例,作为一个独立的应用程序。我希望将应用程序静态地链接到dpdk库中。

我已经下载了DPDK22.07到/home/aizrailev/dpdk,并将其安装到/home/aizrailev/dpdk/install (如果dpdk是在系统范围内安装的,那么一切都很好)。然后我转到/home/aizrailev/dpdk/examples/helloworld,尝试使用下面的meson.build构建应用程序(在此之前,我运行export PKG_CONFIG_PATH=/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/pkgconfig):

代码语言:javascript
复制
project('dpdk-app', 'c')                                                                                                                                                                      
                                                                                                                                                                                              
dpdk = dependency('libdpdk', static: true)                                                                                                                                                    
sources = files('main.c')                                                                                                                                                                     
executable('dpdk-app', sources, dependencies: dpdk) 

构建应用程序的步骤:

代码语言:javascript
复制
meson build
cd build/
ninja

发生下列错误:

代码语言:javascript
复制
[2/2] Linking target dpdk-app
FAILED: dpdk-app 
cc  -o dpdk-app dpdk-app.p/main.c.o -Wl,--as-needed -Wl,--no-undefined -Wl,--whole-archive
-Wl,--start-group /home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_common_cpt.a
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_common_dpaax.a
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_common_iavf.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_common_octeontx.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_bus_auxiliary.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_bus_dpaa.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_bus_fslmc.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_bus_ifpga.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_bus_pci.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_bus_vdev.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_bus_vmbus.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_common_cnxk.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_common_mlx5.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_common_qat.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_common_sfc_efx.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_mempool_bucket.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_mempool_cnxk.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_mempool_dpaa.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_mempool_dpaa2.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_mempool_octeontx.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_mempool_ring.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_mempool_stack.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_dma_cnxk.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_dma_dpaa.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_dma_dpaa2.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_dma_hisilicon.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_dma_idxd.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_dma_ioat.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_dma_skeleton.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_net_af_packet.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_net_ark.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_net_atlantic.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_net_avp.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_net_axgbe.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_net_bnx2x.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_net_bnxt.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_net_bond.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_net_cnxk.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_net_cxgbe.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_net_dpaa.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_net_dpaa2.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_net_e1000.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_net_ena.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_net_enetc.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_net_enetfec.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_net_enic.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_net_failsafe.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_net_fm10k.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_net_hinic.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_net_hns3.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_net_i40e.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_net_iavf.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_net_ice.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_net_igc.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_net_ionic.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_net_ixgbe.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_net_kni.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_net_liquidio.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_net_memif.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_net_mlx4.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_net_mlx5.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_net_netvsc.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_net_nfp.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_net_ngbe.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_net_null.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_net_octeontx.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_net_octeontx_ep.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_net_pcap.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_net_pfe.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_net_qede.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_net_ring.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_net_sfc.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_net_softnic.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_net_tap.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_net_thunderx.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_net_txgbe.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_net_vdev_netvsc.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_net_vhost.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_net_virtio.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_net_vmxnet3.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_raw_cnxk_bphy.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_raw_cnxk_gpio.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_raw_dpaa2_cmdif.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_raw_ntb.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_raw_skeleton.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_crypto_bcmfs.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_crypto_caam_jr.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_crypto_ccp.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_crypto_cnxk.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_crypto_dpaa_sec.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_crypto_dpaa2_sec.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_crypto_mlx5.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_crypto_nitrox.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_crypto_null.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_crypto_octeontx.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_crypto_openssl.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_crypto_scheduler.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_crypto_virtio.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_compress_mlx5.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_compress_octeontx.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_compress_zlib.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_regex_mlx5.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_regex_cn9k.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_vdpa_ifc.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_vdpa_mlx5.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_vdpa_sfc.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_event_cnxk.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_event_dlb2.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_event_dpaa.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_event_dpaa2.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_event_dsw.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_event_opdl.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_event_skeleton.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_event_sw.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_event_octeontx.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_baseband_acc100.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_baseband_fpga_5gnr_fec.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_baseband_fpga_lte_fec.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_baseband_la12xx.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_baseband_null.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_baseband_turbo_sw.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_node.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_graph.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_flow_classify.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_pipeline.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_table.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_pdump.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_port.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_fib.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_ipsec.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_vhost.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_stack.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_security.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_sched.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_reorder.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_rib.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_dmadev.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_regexdev.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_rawdev.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_power.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_pcapng.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_member.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_lpm.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_latencystats.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_kni.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_jobstats.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_ip_frag.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_gso.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_gro.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_gpudev.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_eventdev.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_efd.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_distributor.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_cryptodev.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_compressdev.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_cfgfile.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_bpf.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_bitratestats.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_bbdev.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_acl.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_timer.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_hash.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_metrics.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_cmdline.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_pci.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_ethdev.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_meter.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_net.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_mbuf.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_mempool.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_rcu.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_ring.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_eal.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_telemetry.a 
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_kvargs.a -Wl,--no-whole-archive
-Wl,--export-dynamic /usr/lib/gcc/x86_64-linux-gnu/11/libatomic.a
/usr/lib/x86_64-linux-gnu/libmlx5.a /usr/lib/x86_64-linux-gnu/libcrypto.a -ldl -pthread
/usr/lib/x86_64-linux-gnu/libz.a /usr/lib/x86_64-linux-gnu/libmlx4.a
/usr/lib/x86_64-linux-gnu/libibverbs.a /usr/lib/x86_64-linux-gnu/libbnxt_re-rdmav34.a
/usr/lib/x86_64-linux-gnu/libcxgb4-rdmav34.a /usr/lib/x86_64-linux-gnu/libefa.a
/usr/lib/x86_64-linux-gnu/libhns-rdmav34.a /usr/lib/x86_64-linux-gnu/libirdma-rdmav34.a
/usr/lib/x86_64-linux-gnu/libmthca-rdmav34.a /usr/lib/x86_64-linux-gnu/libocrdma-rdmav34.a
/usr/lib/x86_64-linux-gnu/libqedr-rdmav34.a /usr/lib/x86_64-linux-gnu/libvmw_pvrdma-rdmav34.a
/usr/lib/x86_64-linux-gnu/libhfi1verbs-rdmav34.a /usr/lib/x86_64-linux-gnu/libipathverbs-rdmav34.a 
/usr/lib/x86_64-linux-gnu/librxe-rdmav34.a /usr/lib/x86_64-linux-gnu/libsiw-rdmav34.a
/usr/lib/x86_64-linux-gnu/libnl-route-3.a /usr/lib/x86_64-linux-gnu/libnl-3.a
/usr/lib/x86_64-linux-gnu/libpcap.a /usr/lib/x86_64-linux-gnu/libdbus-1.a
/usr/lib/x86_64-linux-gnu/libjansson.a -Wl,--as-needed -lm /usr/lib/x86_64-linux-gnu/libnuma.a
-Wl,--end-group
/usr/bin/ld: /usr/lib/x86_64-linux-gnu/libpcap.a(bpf_filter.o): in function `bpf_validate':
(.text+0x680): multiple definition of `bpf_validate';
/home/aizrailev/dpdk/install/lib/x86_64-linux-gnu/librte_bpf.a(bpf_bpf_validate.c.o):bpf_validate.c:(.text+0x22c0): first defined here
/usr/bin/ld: /usr/lib/x86_64-linux-gnu/libdbus-1.a(libdbus_1_la-dbus-sysdeps-unix.o): in function `_dbus_listen_systemd_sockets':
(.text+0x200e): undefined reference to `sd_listen_fds'
/usr/bin/ld: (.text+0x204f): undefined reference to `sd_is_socket'
collect2: error: ld returned 1 exit status
ninja: build stopped: subcommand failed.

但是,如果我使用另一个显式调用pkg-config的meson.build来获取标志,那么一切都很好:

代码语言:javascript
复制
project('dpdk-app', 'c')

pkgconfig = find_program('pkg-config')
cflags_cmd = run_command(pkgconfig, '--cflags', 'libdpdk', check: true)
ldflags_cmd = run_command(pkgconfig, '--static', '--libs', 'libdpdk', check: true)

cflags = cflags_cmd.stdout().split()
ldflags = ldflags_cmd.stdout().split()

sources = files('main.c')
executable('dpdk-app', sources, c_args: cflags, link_args: ldflags)

因此,介子使用依赖项的本机方式会导致错误。我是不是遗漏了什么?我不认为像我在第二个meson.build中那样调用pkg-config是实现我想要的效果的好方法,但是我找不到其他的选择。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-31 13:56:46

根据这些评论,这个问题被描述为meson fails to statically build the dpdk application。但是,在本地研究这个问题不会产生错误,下面的介子构建文件如下

代码语言:javascript
复制
project('dpdk-app', 'c')

pkgconfig = find_program('pkg-config')
cflags_cmd = run_command(pkgconfig, '--cflags', 'libdpdk', check: true)
ldflags_cmd = run_command(pkgconfig, '--static', '--libs', 'libdpdk', check: true)

cflags = cflags_cmd.stdout().split()
ldflags = ldflags_cmd.stdout().split()

sources = files('main.c')
executable('dpdk-app', sources, c_args: cflags, link_args: ldflags)

步骤:

将dpdk示例将dpdk示例复制到自定义文件夹中(例如: /tmp/mytest)

  • add the meson.build to the folder.

  • populate,内容具有共享步骤as

  • use meson-ninja以构建应用程序(meson build;ninja -C build)
  • application不需要任何errors
  • run ),应用程序使用./build/dpdk-app (它工作)

F 226构建

但是我们得到了错误,如果我们使用介子构建

代码语言:javascript
复制
project('test', 'c')

dpdk = dependency('libdpdk', static: true)
sources = files('main.c')
executable('dpdk-app', sources, dependencies: dpdk, )

仔细检查错误日志

代码语言:javascript
复制
/usr/bin/ld: /usr/lib/x86_64-linux-gnu/libpcap.a(bpf_filter.o): in function `bpf_validate':
(.text+0x460): multiple definition of `bpf_validate'; /usr/local/lib/x86_64-linux-gnu/librte_bpf.a(librte_bpf_bpf_validate.c.o):bpf_validate.c:(.text+0x23c0): first defined here

错误来自librte_bpf.a和libpcap.a。

若要解决此问题,请将介子构建更新为

代码语言:javascript
复制
project('test', 'c',)

dpdk = dependency('libdpdk', static: true)
sources = files('main.c')
executable('dpdk-app', sources, dependencies: dpdk, link_args : ['-lsystemd', '-Wl,--allow-multiple-definition',])

如上文所述,如果设置正确,则DPDK或pkg-config没有问题。但是实际的错误来自包含相同函数名和代码的库。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74238275

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档