diff --git a/LCS/Stream/src/SystemCallException.cc b/LCS/Stream/src/SystemCallException.cc
index f4388fe0d5f67093b1e82fdb6babd5247930e360..5bb06a773a5c2312b4f29a5b549c05b2c5622254 100644
--- a/LCS/Stream/src/SystemCallException.cc
+++ b/LCS/Stream/src/SystemCallException.cc
@@ -55,7 +55,7 @@ std::string SystemCallException::errorMessage(int error)
 
   // there are two incompatible versions of versions of strerror_r()
 
-#if (_POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600) && ! _GNU_SOURCE
+#if !__linux__ || (!_GNU_SOURCE && (_POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600))
   if (strerror_r(error, buffer, sizeof buffer) == 0)
     return std::string(buffer);
   else