diff --git a/ch32v003fun/ch32v003fun.mk b/ch32v003fun/ch32v003fun.mk
index b8a7690f7f77fd90ad425319298309ce8a83279b..fc382a34f953b94a0fc1f4b417c092459bb8b2be 100644
--- a/ch32v003fun/ch32v003fun.mk
+++ b/ch32v003fun/ch32v003fun.mk
@@ -33,6 +33,7 @@ ifeq ($(TARGET_MCU),CH32V003)
 	GENERATED_LD_FILE?=$(CH32V003FUN)/generated_ch32v003.ld
 	TARGET_MCU_LD:=0
 	LINKER_SCRIPT?=$(GENERATED_LD_FILE)
+	LDFLAGS+=-L$(CH32V003FUN)/../misc -lgcc
 else
 	ifeq ($(findstring CH32V10,$(TARGET_MCU)),CH32V10)
 		include $(CH32V003FUN)/ch32v10xfun.mk
@@ -45,7 +46,7 @@ else
 	endif
 endif
 
-LDFLAGS+=-T $(LINKER_SCRIPT) -Wl,--gc-sections -L$(CH32V003FUN)/../misc -lgcc
+LDFLAGS+=-T $(LINKER_SCRIPT) -Wl,--gc-sections
 
 ifeq ($(TARGET_MCU), CH32V003)
 
diff --git a/ch32v003fun/ch32v10xfun.mk b/ch32v003fun/ch32v10xfun.mk
index b5a073a0f4500cf96fd979e7c5c1ecee333f00a4..94bf13ba296e789aa9492952590fe5a7033b2c2d 100644
--- a/ch32v003fun/ch32v10xfun.mk
+++ b/ch32v003fun/ch32v10xfun.mk
@@ -26,6 +26,7 @@ else ifeq ($(findstring C6, $(TARGET_MCU_PACKAGE)), C6)
 endif
 
 TARGET_MCU_LD:=1
+LDFLAGS+=-lgcc
 
 GENERATED_LD_FILE:=$(CH32V003FUN)/generated_$(TARGET_MCU_PACKAGE).ld
 LINKER_SCRIPT:=$(GENERATED_LD_FILE)
diff --git a/ch32v003fun/ch32v20xfun.mk b/ch32v003fun/ch32v20xfun.mk
index eb9e8fee42896e976597cdf3ce8ecb5988fc0cb0..012dcc995bb43bbd756b595f8011cbac4bc4c5e9 100644
--- a/ch32v003fun/ch32v20xfun.mk
+++ b/ch32v003fun/ch32v20xfun.mk
@@ -53,6 +53,7 @@ else
 endif
 
 TARGET_MCU_LD:=2
+LDFLAGS+=-lgcc
 
 GENERATED_LD_FILE:=$(CH32V003FUN)/generated_$(TARGET_MCU_PACKAGE).ld
 LINKER_SCRIPT:=$(GENERATED_LD_FILE)
diff --git a/ch32v003fun/ch32v30xfun.mk b/ch32v003fun/ch32v30xfun.mk
index 0b1600c1c7da18c8ed87aa871bfc6d93690196c3..eeab434437716f73af44ede973594b2e187942f5 100644
--- a/ch32v003fun/ch32v30xfun.mk
+++ b/ch32v003fun/ch32v30xfun.mk
@@ -39,6 +39,7 @@ else
 endif
 
 TARGET_MCU_LD:=3
+LDFLAGS+=-lgcc
 
 GENERATED_LD_FILE:=$(CH32V003FUN)/generated_$(TARGET_MCU_PACKAGE).ld
 LINKER_SCRIPT:=$(GENERATED_LD_FILE)