diff --git a/ch32v003fun/ch32v003fun.mk b/ch32v003fun/ch32v003fun.mk
index d528ab58f672e0d98fc854f20418a99be24f03de..f1b96569f6a2b1845ebbf6f6090ae191474e7f86 100644
--- a/ch32v003fun/ch32v003fun.mk
+++ b/ch32v003fun/ch32v003fun.mk
@@ -59,8 +59,10 @@ LDFLAGS+=-T $(LINKER_SCRIPT) -Wl,--gc-sections -L$(CH32V003FUN)/../misc -lgcc
 
 ifeq ($(TARGET_MCU), CH32V003)
 
-$(TARGET).elf : $(SYSTEM_C) $(TARGET).$(TARGET_EXT) $(ADDITIONAL_C_FILES)
-	$(PREFIX)-gcc -o $@ $^ $(CFLAGS) $(LDFLAGS)
+COMPILED_FILES:=$(SYSTEM_C) $(TARGET).$(TARGET_EXT) $(ADDITIONAL_C_FILES) 
+
+$(TARGET).elf : $(COMPILED_FILES) $(LINKER_SCRIPT)
+	$(PREFIX)-gcc -o $@ $(COMPILED_FILES) $(CFLAGS) $(LDFLAGS)
 
 endif
 
@@ -102,7 +104,6 @@ FLASH_COMMAND?=$(MINICHLINK)/minichlink -w $< $(WRITE_SECTION) -b
 $(GENERATED_LD_FILE) :
 	$(PREFIX)-gcc -E -P -x c -DTARGET_MCU=CH32V003 $(CH32V003FUN)/ch32v003fun.ld > $(GENERATED_LD_FILE)
 
-
 cv_flash : $(TARGET).bin
 	make -C $(MINICHLINK) all
 	$(FLASH_COMMAND)