Skip to content

nr-oru linking fails when DPDK is not installed in default installation path #369

Description

@beurdouc

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions