diff --git a/configure.ac b/configure.ac
index 1b6154a2d39e2579116e10ff522c2ad5313156c2..2a0a30f0300ebbe2879a9a56ce912ae32f441acd 100644
--- a/configure.ac
+++ b/configure.ac
@@ -332,6 +332,11 @@ if test "$(uname)" = "Darwin"; then
 fi
 
 
+# Figure out the extension of dynamic libraries.
+eval dynlib_suffix=$shrext_cmds
+AC_SUBST(dynlib_suffix)
+
+
 AM_CONFIG_HEADER([config.h])
 AC_CONFIG_FILES([Makefile
    externals/Makefile
diff --git a/perl/Makefile.am b/perl/Makefile.am
index 12293fc050a6440f36857a8b0f706048364bc42c..4d898c32c6685fb0daa0f2c888d5cc0dd56a5bf3 100644
--- a/perl/Makefile.am
+++ b/perl/Makefile.am
@@ -3,13 +3,13 @@ PERL_MODULES = lib/Nix/Store.pm lib/Nix/Manifest.pm lib/Nix/GeneratePatches.pm l
 # Hack required by "make check".
 all: $(PERL_MODULES:.in=)
 	mkdir -p lib/auto/Nix/Store
-	ln -sfn $(abs_builddir)/.libs/libNixStore.so lib/auto/Nix/Store/Store.so
+	ln -sfn $(abs_builddir)/.libs/libNixStore$(dynlib_suffix) lib/auto/Nix/Store/Store$(dynlib_suffix)
 
 install-exec-local: $(PERL_MODULES:.in=)
 	$(INSTALL) -d $(DESTDIR)$(perllibdir)/Nix
 	$(INSTALL_DATA) $(PERL_MODULES:.in=) $(DESTDIR)$(perllibdir)/Nix
 	$(INSTALL) -d $(DESTDIR)$(perllibdir)/auto/Nix/Store
-	ln -sfn $(pkglibdir)/libNixStore.so $(DESTDIR)$(perllibdir)/auto/Nix/Store/Store.so
+	ln -sfn $(pkglibdir)/libNixStore$(dynlib_suffix) $(DESTDIR)$(perllibdir)/auto/Nix/Store/Store$(dynlib_suffix)
 
 # Awful hackery to get libtool to build Perl XS bindings.
 pkglib_LTLIBRARIES = libNixStore.la