[LEDE-DEV] [PATCH] rules.mk: disable CXX11 ABI with uClibc++

Stijn Tintel stijn at linux-ipv6.be
Tue Mar 21 11:13:53 PDT 2017


GCC 5.1 introduced a new library ABI to conform to the 2011 C++
standard. This new ABI is enabled by default. This causes compatibility
issues between libraries compiled against libstdc++ and libraries
compiled against uClibc++, as the latter doesn't support this new ABI.

Solve this by disabling the _GLIBCXX_USE_CXX11_ABI macro when uClibc++
is selected as the preferred standard C++ library.

Signed-off-by: Stijn Tintel <stijn at linux-ipv6.be>
---
 rules.mk | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/rules.mk b/rules.mk
index ed796a5..bf051b7 100644
--- a/rules.mk
+++ b/rules.mk
@@ -164,7 +164,7 @@ TARGET_PATH:=$(subst $(space),:,$(filter-out .,$(filter-out ./,$(subst :,$(space
 TARGET_INIT_PATH:=$(call qstrip,$(CONFIG_TARGET_INIT_PATH))
 TARGET_INIT_PATH:=$(if $(TARGET_INIT_PATH),$(TARGET_INIT_PATH),/usr/sbin:/sbin:/usr/bin:/bin)
 TARGET_CFLAGS:=$(TARGET_OPTIMIZATION)$(if $(CONFIG_DEBUG), -g3) $(call qstrip,$(CONFIG_EXTRA_OPTIMIZATION))
-TARGET_CXXFLAGS = $(TARGET_CFLAGS)
+TARGET_CXXFLAGS = $(TARGET_CFLAGS) $(if $(CONFIG_USE_UCLIBCXX), -D_GLIBCXX_USE_CXX11_ABI=0)
 TARGET_ASFLAGS_DEFAULT = $(TARGET_CFLAGS)
 TARGET_ASFLAGS = $(TARGET_ASFLAGS_DEFAULT)
 TARGET_CPPFLAGS:=-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include
-- 
2.10.2




More information about the Lede-dev mailing list