diff --git a/CMakeLists.txt b/CMakeLists.txt
index e88a989906f2f55bdd0457a65bcf2ca8826b3184..72fbd8d8269cdce5e8fb00f05d8e178cf8c07e31 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -98,6 +98,12 @@ elseif(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
   set(PUGS_CXX_FLAGS "${PUGS_CXX_FLAGS} -Wsign-compare -Wunused -Wunused-member-function -Wunused-private-field")
 endif()
 
+if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
+  if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS "9.0.0")
+    set(PUGS_STD_LINK_FLAGS "-lstdc++fs")
+  endif()
+endif()
+
 #------------------------------------------------------
 # defaults use of MPI
 set(PUGS_ENABLE_MPI AUTO CACHE STRING
@@ -386,4 +392,5 @@ target_link_libraries(
   ${MPI_CXX_LINK_FLAGS} ${MPI_CXX_LIBRARIES}
   ${KOKKOS_CXX_FLAGS}
   ${OPENMP_LINK_FLAGS}
+  ${PUGS_STD_LINK_FLAGS}
 )