DPDK may be installed in a different location than the default install path.
For example, by using meson setup --prefix=/opt/dpdk build, DPDK is installed in /opt/dpdk.
This is especially useful on setups where several versions of DPDK may coexist for any reason.
Then pkgconfig can be used to build the 7.2 fronthaul and ldpc_aal library:
PKG_CONFIG_PATH=/opt/dpdk/lib/x86_64-linux-gnu/pkgconfig/ ./build_oai [...]
But this does not work for nr-oru which also requires DPDK.
Linking fails as the library cannot be found:
344.6 [11945/11946] Linking CXX executable nr-oru
344.6 FAILED: nr-oru
344.6 : && /usr/bin/c++ -DSIMDE_X86_AVX_NATIVE -DSIMDE_X86_AVX_NATIVE -DSIMDE_X86_F16C_NATIVE -DSIMDE_X86_FMA_NATIVE -DSIMDE_X86_MMX_NATIVE -DSIMDE_X86_PCLMUL_NATIVE -DSIMDE_X86_SSE2_NATIVE -DSIMDE_X86_SSE3_NATIVE -DSIMDE_X86_SSE_NATIVE -DSIMDE_X86_XOP_HAVE_COM_ -DSIMDE_X86_XOP_NATIVE -DSIMDE_X86_AVX512BW_NATIVE -DSIMDE_X86_AVX512F_NATIVE -DSIMDE_X86_AVX512VL_NATIVE -mavx512bw -march=skylake-avx512 -mtune=skylake-avx512 -DSIMDE_X86_AVX2_NATIVE -DSIMDE_X86_VPCLMULQDQ_NATIVE -DSIMDE_X86_GFNI_NATIVE -mgfni -DSIMDE_X86_SSE4_1_NATIVE -DSIMDE_X86_SSE4_2_NATIVE -DSIMDE_X86_SSSE3_NATIVE -march=native -pipe -fPIC -Wall -fno-strict-aliasing -rdynamic -Wno-packed-bitfield-compat -O2 -g CMakeFiles/shlib_loader.dir/common/utils/load_module_shlib.c.o CMakeFiles/nr-oru.dir/executables/nr-ru.c.o CMakeFiles/nr-oru.dir/openair1/PHY/INIT/nr_parms.c.o CMakeFiles/nr-oru.dir/openair1/SCHED_NR/phy_frame_config_nr.c.o CMakeFiles/nr-oru.dir/openair1/SCHED_NR/nr_prach_procedures.c.o CMakeFiles/nr-oru.dir/openair1/SCHED_NR/nr_ru_procedures.c.o CMakeFiles/nr-oru.dir/openair1/SCHED/phy_procedures_lte_common.c.o CMakeFiles/nr-oru.dir/executables/main_nr_ru.c.o CMakeFiles/nr-oru.dir/executables/nr-oru.c.o -o nr-oru -Wl,-rpath,/oai-ran/cmake_targets/ran_build/build libUTIL.a libNR_PHY_RU.a libPHY_NR.a -ldl fronthaul/oru/liboru_fh.a openair2/LAYER2/NR_MAC_COMMON/libMAC_NR_COMMON.a radio/COMMON/libradio_common.a executables/libsoftmodem_common.a nfapi/open-nFAPI/pnf/libnfapi_pnf_lib.a common/utils/symbol_reorder/libsymbol_reorder.a -lpthread -lm libCONFIG_LIB.a -lrt common/utils/T/libT.a common/utils/libutils.a common/utils/barrier/libbarrier.a common/utils/actor/libactor.a nfapi/oai_integration/libnfapi_user_lib.a openair1/PHY/nr_phy_common/libnr_phy_common.a common/utils/time_manager/libtime_management.a libPHY_COMMON.a common/utils/nr/libnr_common.a openair1/PHY/CODING/nrPolar_tools/libpolar.a openair1/PHY/CODING/nrSmallBlock/libsmallblock.a fronthaul/oru/liboru_io.a fronthaul/core/libfh_send.a fronthaul/core/libfh_recv.a fronthaul/core/libfh_timer.a -lm fronthaul/oru/liboru_packet_processor.a fronthaul/xran_pkt/libxran_pkt.a fronthaul/oru/libfh_compression.a -lrte_node -lrte_graph -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_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 nfapi/oai_integration/socket/libnfapi_socket_lib.a nfapi/open-nFAPI/vnf/libnfapi_vnf_lib.a nfapi/open-nFAPI/pnf/libnfapi_pnf_lib.a nfapi/oai_integration/libnfapi_user_lib.a nfapi/oai_integration/socket/libnfapi_socket_lib.a nfapi/open-nFAPI/vnf/libnfapi_vnf_lib.a libUTIL.a libCONFIG_LIB.a common/utils/T/libT.a common/utils/libutils.a common/utils/LOG/libLOG.a common/utils/threadPool/libthread-pool.a libUTIL.a libCONFIG_LIB.a common/utils/T/libT.a common/utils/libutils.a common/utils/LOG/libLOG.a common/utils/threadPool/libthread-pool.a common/utils/barrier/libbarrier.a -lpthread common/utils/actor/libactor.a -ldl -lrt nfapi/open-nFAPI/nfapi/libnfapi_nr_lib.a nfapi/open-nFAPI/fapi/libnr_fapi_p5.a nfapi/open-nFAPI/fapi/libnr_fapi_p7.a nfapi/open-nFAPI/fapi/libnr_fapi_common.a nfapi/open-nFAPI/nfapi/libnfapi_lte_lib.a nfapi/open-nFAPI/common/libnfapi_common.a -lz && :
344.6 /usr/bin/ld: cannot find -lrte_node: No such file or directory
344.6 /usr/bin/ld: cannot find -lrte_graph: No such file or directory
344.6 /usr/bin/ld: cannot find -lrte_pipeline: No such file or directory
[...]
This is no big issue from the moment no-one has a good reason to swap DPDK versions for nr-oru.
I personally just removed nr-oru from the build command that caused me this problem as I didn't need it.
I just wanted to let you know about this behavior just in case you consider relevant to fix it.
DPDK may be installed in a different location than the default install path.
For example, by using
meson setup --prefix=/opt/dpdk build, DPDK is installed in/opt/dpdk.This is especially useful on setups where several versions of DPDK may coexist for any reason.
Then pkgconfig can be used to build the 7.2 fronthaul and ldpc_aal library:
But this does not work for
nr-oruwhich also requires DPDK.Linking fails as the library cannot be found:
This is no big issue from the moment no-one has a good reason to swap DPDK versions for
nr-oru.I personally just removed
nr-orufrom the build command that caused me this problem as I didn't need it.I just wanted to let you know about this behavior just in case you consider relevant to fix it.