diff --git a/compat/windows/mslink b/compat/windows/mslink
new file mode 100755
index 0000000000000000000000000000000000000000..07b2b3e3787cdda7dfe5d902db931d124c46a29c
--- /dev/null
+++ b/compat/windows/mslink
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+LINK_EXE_PATH=$(dirname "$(command -v cl)")/link
+if [ -x "$LINK_EXE_PATH" ]; then
+    "$LINK_EXE_PATH" $@
+else
+    link $@
+fi
+exit $?
diff --git a/configure b/configure
index 7b8815fb6df5a3d7e6035be8a9cd73f049edfe72..7748bc7018000355bf584eee709f40d5ca94bfaa 100755
--- a/configure
+++ b/configure
@@ -3183,7 +3183,7 @@ case "$toolchain" in
         else
             cc_default="c99wrap cl"
         fi
-        ld_default="link"
+        ld_default="$source_path/compat/windows/mslink"
         nm_default="dumpbin -symbols"
         ar_default="lib"
         target_os_default="win32"