mk: fix linking with static ibverbs libraries

Message ID 1588162315-177263-1-git-send-email-bingz@mellanox.com (mailing list archive)
State Accepted, archived
Delegated to: Thomas Monjalon
Headers
Series mk: fix linking with static ibverbs libraries |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/iol-intel-Performance fail Performance Testing issues
ci/iol-nxp-Performance success Performance Testing PASS
ci/travis-robot warning Travis build: failed
ci/iol-mellanox-Performance success Performance Testing PASS
ci/iol-testing success Testing PASS
ci/Intel-compilation success Compilation OK

Commit Message

Bing Zhao April 29, 2020, 12:11 p.m. UTC
  When building a target application with static linking mode via
makefiles and enable linking to ibverbs libs by setting
"CONFIG_RTE_IBVERBS_LINK_STATIC=y". The libibverbs.pc will be
chosen and all the libs listed in the file will be linked
by default. Some static lib archives may contain the same files
and common interfaces inside.
The "--no-whole-archive" needs to be enabled for the linker to
discard the useless symbols and resolve the symbols redefinition
error.

Fixes: 95276abaaf0a ("vdpa/mlx5: introduce Mellanox vDPA driver")
Cc: matan@mellanox.com
Cc: stable@dpdk.org

Signed-off-by: Bing Zhao <bingz@mellanox.com>
---
 mk/rte.app.mk | 2 ++
 1 file changed, 2 insertions(+)
  

Comments

Thomas Monjalon May 6, 2020, 10:01 p.m. UTC | #1
29/04/2020 14:11, Bing Zhao:
> When building a target application with static linking mode via
> makefiles and enable linking to ibverbs libs by setting
> "CONFIG_RTE_IBVERBS_LINK_STATIC=y". The libibverbs.pc will be
> chosen and all the libs listed in the file will be linked
> by default. Some static lib archives may contain the same files
> and common interfaces inside.
> The "--no-whole-archive" needs to be enabled for the linker to
> discard the useless symbols and resolve the symbols redefinition
> error.
> 
> Fixes: 95276abaaf0a ("vdpa/mlx5: introduce Mellanox vDPA driver")

The origin is older than vdpa PMD.
It is when introducing ibverbs static linking:
Fixes: 2c0dd7b69fb0 ("config: add static linkage of mlx dependency")

> Cc: stable@dpdk.org
> 
> Signed-off-by: Bing Zhao <bingz@mellanox.com>

Acked-by: Thomas Monjalon <thomas@monjalon.net>

Applied, thanks
  

Patch

diff --git a/mk/rte.app.mk b/mk/rte.app.mk
index 77161c7..15ef28b 100644
--- a/mk/rte.app.mk
+++ b/mk/rte.app.mk
@@ -207,7 +207,9 @@  ifeq ($(CONFIG_RTE_IBVERBS_LINK_DLOPEN),y)
 _LDLIBS-y                                   += -ldl
 else ifeq ($(CONFIG_RTE_IBVERBS_LINK_STATIC),y)
 LIBS_IBVERBS_STATIC = $(shell $(RTE_SDK)/buildtools/options-ibverbs-static.sh)
+_LDLIBS-y                                   += --no-whole-archive
 _LDLIBS-y                                   += $(LIBS_IBVERBS_STATIC)
+_LDLIBS-y                                   += --whole-archive
 else
 ifeq ($(findstring y,$(CONFIG_RTE_LIBRTE_MLX5_PMD)$(CONFIG_RTE_LIBRTE_MLX5_VDPA_PMD)),y)
 _LDLIBS-y                                   += -libverbs -lmlx5