spdk/dpdk

Dpdk build getting failed due to issue in rpath

Opened this issue · 3 comments

Getting following error while building librte_eal for dpdk -

Error: Linker flag rpath (build-time rpath) is not allowed, unless it is a placeholder for INSTALL_RPATH (:*). Please fix the build script for this package.

cc -o lib/librte_eal.so.21.0 lib/librte_eal.a.p/librte_eal_common_eal_common_bus.c.o lib/librte_eal.a.p/librte_eal_common_eal_common_cpuflags.c.o lib/librte_eal.a.p/librte_eal_common_eal_c ommon_class.c.o lib/librte_eal.a.p/librte_eal_common_eal_common_config.c.o lib/librte_eal.a.p/librte_eal_common_eal_common_debug.c.o lib/librte_eal.a.p/librte_eal_common_eal_common_devargs.c.o lib/librte_ eal.a.p/librte_eal_common_eal_common_dev.c.o lib/librte_eal.a.p/librte_eal_common_eal_common_errno.c.o lib/librte_eal.a.p/librte_eal_common_eal_common_fbarray.c.o lib/librte_eal.a.p/librte_eal_common_eal_ common_hexdump.c.o lib/librte_eal.a.p/librte_eal_common_eal_common_hypervisor.c.o lib/librte_eal.a.p/librte_eal_common_eal_common_launch.c.o lib/librte_eal.a.p/librte_eal_common_eal_common_lcore.c.o lib/l ibrte_eal.a.p/librte_eal_common_eal_common_log.c.o lib/librte_eal.a.p/librte_eal_common_eal_common_mcfg.c.o lib/librte_eal.a.p/librte_eal_common_eal_common_memalloc.c.o lib/librte_eal.a.p/librte_eal_commo n_eal_common_memory.c.o lib/librte_eal.a.p/librte_eal_common_eal_common_memzone.c.o lib/librte_eal.a.p/librte_eal_common_eal_common_options.c.o lib/librte_eal.a.p/librte_eal_common_eal_common_proc.c.o lib /librte_eal.a.p/librte_eal_common_eal_common_string_fns.c.o lib/librte_eal.a.p/librte_eal_common_eal_common_tailqs.c.o lib/librte_eal.a.p/librte_eal_common_eal_common_thread.c.o lib/librte_eal.a.p/librte_ eal_common_eal_common_timer.c.o lib/librte_eal.a.p/librte_eal_common_eal_common_trace.c.o lib/librte_eal.a.p/librte_eal_common_eal_common_trace_ctf.c.o lib/librte_eal.a.p/librte_eal_common_eal_common_trac e_points.c.o lib/librte_eal.a.p/librte_eal_common_eal_common_trace_utils.c.o lib/librte_eal.a.p/librte_eal_common_eal_common_uuid.c.o lib/librte_eal.a.p/librte_eal_common_hotplug_mp.c.o lib/librte_eal.a.p /librte_eal_common_malloc_elem.c.o lib/librte_eal.a.p/librte_eal_common_malloc_heap.c.o lib/librte_eal.a.p/librte_eal_common_malloc_mp.c.o lib/librte_eal.a.p/librte_eal_common_rte_keepalive.c.o lib/librte _eal.a.p/librte_eal_common_rte_malloc.c.o lib/librte_eal.a.p/librte_eal_common_rte_random.c.o lib/librte_eal.a.p/librte_eal_common_rte_reciprocal.c.o lib/librte_eal.a.p/librte_eal_common_rte_service.c.o l ib/librte_eal.a.p/librte_eal_common_eal_common_dynmem.c.o lib/librte_eal.a.p/librte_eal_unix_eal_file.c.o lib/librte_eal.a.p/librte_eal_unix_eal_unix_memory.c.o lib/librte_eal.a.p/librte_eal_unix_eal_unix _timer.c.o lib/librte_eal.a.p/librte_eal_linux_eal.c.o lib/librte_eal.a.p/librte_eal_linux_eal_alarm.c.o lib/librte_eal.a.p/librte_eal_linux_eal_cpuflags.c.o lib/librte_eal.a.p/librte_eal_linux_eal_debug. c.o lib/librte_eal.a.p/librte_eal_linux_eal_dev.c.o lib/librte_eal.a.p/librte_eal_linux_eal_hugepage_info.c.o lib/librte_eal.a.p/librte_eal_linux_eal_interrupts.c.o lib/librte_eal.a.p/librte_eal_linux_eal _lcore.c.o lib/librte_eal.a.p/librte_eal_linux_eal_log.c.o lib/librte_eal.a.p/librte_eal_linux_eal_memalloc.c.o lib/librte_eal.a.p/librte_eal_linux_eal_memory.c.o lib/librte_eal.a.p/librte_eal_linux_eal_t hread.c.o lib/librte_eal.a.p/librte_eal_linux_eal_timer.c.o lib/librte_eal.a.p/librte_eal_linux_eal_vfio.c.o lib/librte_eal.a.p/librte_eal_linux_eal_vfio_mp_sync.c.o lib/librte_eal.a.p/librte_eal_x86_rte_ cpuflags.c.o lib/librte_eal.a.p/librte_eal_x86_rte_cycles.c.o lib/librte_eal.a.p/librte_eal_x86_rte_hypervisor.c.o lib/librte_eal.a.p/librte_eal_x86_rte_spinlock.c.o -Wl,--as-needed -Wl,--no-undefined -Wl ,-O1 -shared -fPIC -Wl,--start-group -Wl,-soname,librte_eal.so.21 -Wl,--no-as-needed -pthread -lm -ldl -Wl,-L/thirdparty/spdk-21.01.1/dpdk/config/../../../build/lib,-lnuma '-Wl,-rpath,$ORIGIN/' -Wl,-rpath -link,/thirdparty/spdk-21.01.1/dpdk/build-tmp/lib lib/librte_kvargs.so.21.0 lib/librte_telemetry.so.21.0 -Wl,--end-group -Wl,--version-script=/thirdparty/spdk-21.01.1/dpdk/lib/librte_eal/version.map Error: Linker flag rpath (build-time rpath) is not allowed, unless it is a placeholder for INSTALL_RPATH (:*). Please fix the build script for this package.

I believe this is due to an incompatibility with the linker but I couldn't find any such error on the internet. Can anyone please explain how to resolve this or even what this error means?

GCC version: 7.3.0

meson version: 0.58.1

ninja version: 1.10.0

OS version: CentOS Linux release 7.9.2009 (Core)

Hi,

Can you provide exact reproduction steps, including whether you are building DPDK directly via DPDK repository, or indirectly via the DPDK submodule in SPDK?

And which versions of SPDK/DPDK?

Thanks,

Jim

Hi Jim,

I built DPDK submodule via SPDK. I used the following set of commands inside spdk

./configure --disable-unit-tests --disable-tests --disable-examples --with-fuse --with-nvme-cuse
make

Spdk version - 21.01.1

Dpdk version - 21.0

Also, this error didn't pop when I used another compiler version -(clang or gcc-4.8.5). I suspect the problem is with the linker. I am using the following linker - GNU gold (version 2.27-27.base.el7) 1.12

Can you try building DPDK standalone (i.e. not via SPDK's submodule) with the gold linker using instructions at https://doc.dpdk.org/guides/linux_gsg/build_dpdk.html?