diff --git a/src/unix/linux_like/linux/gnu/mod.rs b/src/unix/linux_like/linux/gnu/mod.rs
index 9ea34dec38ed40e9611b3a214327bfe4484500ab..6ead42fee675b26718ee78c18da63cbeefa12a29 100644
--- a/src/unix/linux_like/linux/gnu/mod.rs
+++ b/src/unix/linux_like/linux/gnu/mod.rs
@@ -1435,7 +1435,6 @@ extern "C" {
     ) -> ::c_int;
 }
 
-#[link(name = "dl")]
 extern "C" {
     pub fn dlmopen(
         lmid: Lmid_t,
diff --git a/src/unix/mod.rs b/src/unix/mod.rs
index 32e8d932bb071d45f9daf12be84667182f35a007..21439c8a49fcb01d868110021ca539b016b8f84c 100644
--- a/src/unix/mod.rs
+++ b/src/unix/mod.rs
@@ -309,6 +309,8 @@ cfg_if! {
             cfg(target_feature = "crt-static"))]
         #[link(name = "m", kind = "static-nobundle",
             cfg(target_feature = "crt-static"))]
+        #[link(name = "dl", kind = "static-nobundle",
+            cfg(target_feature = "crt-static"))]
         #[link(name = "c", kind = "static-nobundle",
             cfg(target_feature = "crt-static"))]
         #[link(name = "gcc_eh", kind = "static-nobundle",
@@ -319,6 +321,7 @@ cfg_if! {
         #[link(name = "rt", cfg(not(target_feature = "crt-static")))]
         #[link(name = "pthread", cfg(not(target_feature = "crt-static")))]
         #[link(name = "m", cfg(not(target_feature = "crt-static")))]
+        #[link(name = "dl", cfg(not(target_feature = "crt-static")))]
         #[link(name = "c", cfg(not(target_feature = "crt-static")))]
         extern {}
     } else if #[cfg(target_env = "musl")] {