Replace --no-as-needed linker flag with --as-needed flag, which will only link libraries directly called by application. It can be achieved now that the libraries dependencies are handled properly.
Signed-off-by: Ferruh Yigit <ferruh.yigit at intel.com> Signed-off-by: Thomas Monjalon <thomas.monjalon at 6wind.com> --- mk/exec-env/linuxapp/rte.vars.mk | 3 --- mk/rte.app.mk | 8 ++++++++ 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/mk/exec-env/linuxapp/rte.vars.mk b/mk/exec-env/linuxapp/rte.vars.mk index d51bd17..a8a1ee4 100644 --- a/mk/exec-env/linuxapp/rte.vars.mk +++ b/mk/exec-env/linuxapp/rte.vars.mk @@ -45,9 +45,6 @@ else EXECENV_CFLAGS = -pthread endif -# Workaround lack of DT_NEEDED entry -EXECENV_LDFLAGS = --no-as-needed - EXECENV_LDLIBS = EXECENV_ASFLAGS = diff --git a/mk/rte.app.mk b/mk/rte.app.mk index f60e5bf..aa794bc 100644 --- a/mk/rte.app.mk +++ b/mk/rte.app.mk @@ -50,6 +50,14 @@ ifeq ($(NO_LDSCRIPT),) LDSCRIPT = $(RTE_LDSCRIPT) endif +ifeq ($(CONFIG_RTE_BUILD_SHARED_LIB),y) +# Workaround to eal <-> mempool cyclic dependency +_LDLIBS-$(CONFIG_RTE_LIBRTE_MEMPOOL) += -lrte_mempool +endif + +# Link only the libraries used in the application +_LDLIBS-y += --as-needed + # default path for libs _LDLIBS-y += -L$(RTE_SDK_BIN)/lib -- 2.5.5