diff --git a/include/toolchain-build.mk b/include/toolchain-build.mk
index a0bc4061fcfcfc6c488e30ac985ccf4c709f9d5d..d2fdb0281a104175bb24649703415b30218ddd65 100644
--- a/include/toolchain-build.mk
+++ b/include/toolchain-build.mk
@@ -16,3 +16,12 @@ TOOLCHAIN_JOBS?=$(if $(CONFIG_TOOLCHAIN_PARALLEL),-j$(CONFIG_PKG_BUILD_JOBS))
 include $(INCLUDE_DIR)/host-build.mk
 
 HOST_STAMP_PREPARED=$(HOST_BUILD_DIR)/.prepared
+
+define FixupLibdir
+	if [ -d $(1)/lib64 -a \! -L $(1)/lib64 ]; then \
+		mkdir -p $(1)/lib; \
+		mv $(1)/lib64/* $(1)/lib/; \
+		rm -rf $(1)/lib64; \
+	fi
+	ln -sf lib $(1)/lib64
+endef
diff --git a/toolchain/binutils/Makefile b/toolchain/binutils/Makefile
index 9d12721dec4aaaa7aaff0287292c5eec42d03e1c..c7d21b1dcdfc2b6a90157415b2fc4219d8f01e87 100644
--- a/toolchain/binutils/Makefile
+++ b/toolchain/binutils/Makefile
@@ -83,6 +83,7 @@ define Host/Install
 	$(MAKE) -C $(HOST_BUILD_DIR) \
 		prefix=$(TOOLCHAIN_DIR)/initial \
 		install
+	$(call FixupLibdir,$(TOOLCHAIN_DIR)/initial)
 	$(CP) $(TOOLCHAIN_DIR)/initial/. $(TOOLCHAIN_DIR)/
 	$(CP) $(TOOLCHAIN_DIR)/bin/$(REAL_GNU_TARGET_NAME)-readelf $(REAL_STAGING_DIR_HOST)/bin/readelf
 endef
diff --git a/toolchain/gcc/initial/Makefile b/toolchain/gcc/initial/Makefile
index 3d8ab61cdf01c54a5971a65bfdca658afaa2559d..6b0536d83a2c9e99e2e473b720e3daa07a30d8d7 100644
--- a/toolchain/gcc/initial/Makefile
+++ b/toolchain/gcc/initial/Makefile
@@ -29,6 +29,8 @@ define Host/Install
 		cp libgcc.a libgcc_initial.a; \
 	)
 
+	$(call FixupLibdir,$(TOOLCHAIN_DIR)/initial)
+
 	$(CP) $(TOOLCHAIN_DIR)/initial/. $(TOOLCHAIN_DIR)/
 endef