diff --git a/compiler/GHC/Driver/Make.hs b/compiler/GHC/Driver/Make.hs
index 73a981969af184d3de5aa5300f366a172fd722bd..aaedcd7be5bebdf293219c5d14e26151a7c7b1d2 100644
--- a/compiler/GHC/Driver/Make.hs
+++ b/compiler/GHC/Driver/Make.hs
@@ -1922,7 +1922,11 @@ enableCodeGenWhen logger tmpfs staticLife dynLife unit_env mod_graph =
     -- the linker can correctly load the object files.  This isn't necessary
     -- when using -fexternal-interpreter.
     dynamic_too_enable enable_spec ms
-      = hostIsDynamic && not hostIsProfiled && internalInterpreter &&
+      | sTargetRTSLinkerOnlySupportsSharedLibs $ settings lcl_dflags =
+          not isDynWay && not dyn_too_enabled
+            && enable_object
+      | otherwise =
+          hostIsDynamic && not hostIsProfiled && internalInterpreter &&
             not isDynWay && not isProfWay &&  not dyn_too_enabled
               && enable_object
       where