diff --git a/cmake/DD4hepBuild.cmake b/cmake/DD4hepBuild.cmake
index a5a259b21f33b81cddb94d68eb831567b18edf95..6a2ddde95bf15852a523499428ff700a06c2e26e 100644
--- a/cmake/DD4hepBuild.cmake
+++ b/cmake/DD4hepBuild.cmake
@@ -99,7 +99,7 @@ macro(dd4hep_set_compiler_flags)
   if("${LINKER_TYPE}" STREQUAL "APPLE")
     SET ( CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-undefined,error")
   elseif("${LINKER_TYPE}" STREQUAL "GNU")
-    SET ( CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--no-undefined")
+    SET ( CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--no-undefined,--as-needed")
   else()
     MESSAGE( WARNING "No known linker (GNU or Apple) has been detected, pass no flags to linker" )
   endif()