diff --git a/shake-ext.cabal b/shake-ext.cabal
--- a/shake-ext.cabal
+++ b/shake-ext.cabal
@@ -1,5 +1,5 @@
 name:                shake-ext
-version:             2.5.0.0
+version:             2.6.0.0
 synopsis:            Helper functions for linting with shake 
 description:         This package provides several linters out of the box, for use with [shake](http://shakebuild.com/).
 homepage:            https://hub.darcs.net/vmchale/shake-ext
diff --git a/src/Development/Shake/C.hs b/src/Development/Shake/C.hs
--- a/src/Development/Shake/C.hs
+++ b/src/Development/Shake/C.hs
@@ -6,6 +6,7 @@
                            , CCompiler (GCC, Clang, GHC, Other, GCCStd, GHCStd)
                            -- * Rules
                            , staticLibR
+                           , sharedLibR
                            , objectFileR
                            , dynLibR
                            , cBin
@@ -13,6 +14,7 @@
                            -- * Actions
                            , ccAction
                            , staticLibA
+                           , sharedLibA
                            -- * Helper functions
                            , cconfigToArgs
                            , ccToString
@@ -133,6 +135,16 @@
         need [srcFile] >>
         command mempty (ccToString cc) (srcFile : "-c" : "-fPIC" : "-o" : out : cconfigToArgs cfg)
 
+sharedLibA :: CmdResult r
+           => CCompiler
+           -> [FilePath] -- ^ Object files to be linked
+           -> FilePattern -- ^ File pattern for shared library outputs
+           -> CConfig
+           -> Action r
+sharedLibA cc objFiles shrLib _ =
+    need objFiles >>
+    command mempty (ccToString cc) ("-shared" : "-o" : shrLib : objFiles)
+
 staticLibA :: CmdResult r
            => CCompiler
            -> [FilePath] -- ^ Object files to be linked
@@ -142,6 +154,14 @@
 staticLibA ar objFiles stalib _ =
     need objFiles >>
     command mempty (arToString ar) ("rcs" : stalib : objFiles)
+
+sharedLibR :: CCompiler
+           -> [FilePath] -- ^ Object files to be linked
+           -> FilePattern -- ^ File pattern for shared library outputs
+           -> CConfig
+           -> Rules ()
+sharedLibR cc objFiles shrLib cfg =
+    shrLib %> \out -> sharedLibA cc objFiles out cfg
 
 staticLibR :: CCompiler -- ^ ar binary
            -> [FilePath] -- ^ Object files to be linked
