diff --git a/src/OSspecific/POSIX/POSIX.C b/src/OSspecific/POSIX/POSIX.C
index e214e7eecabcf09054838adbc52bfe67ab84a420..7a16679511c654bd484bbdc61b499bde83b255a2 100644
--- a/src/OSspecific/POSIX/POSIX.C
+++ b/src/OSspecific/POSIX/POSIX.C
@@ -1161,7 +1161,7 @@ int Foam::system(const std::string& command)
 }
 
 
-void* Foam::dlOpen(const fileName& lib)
+void* Foam::dlOpen(const fileName& lib, const bool check)
 {
     if (POSIX::debug)
     {
@@ -1170,6 +1170,13 @@ void* Foam::dlOpen(const fileName& lib)
     }
     void* handle = ::dlopen(lib.c_str(), RTLD_LAZY|RTLD_GLOBAL);
 
+    if (!handle && check)
+    {
+        WarningIn("dlOpen(const fileName&, const bool)")
+            << "dlopen error : " << ::dlerror()
+            << endl;
+    }
+
     if (POSIX::debug)
     {
         std::cout
diff --git a/src/OpenFOAM/db/dictionary/functionEntries/codeStream/codeStream.C b/src/OpenFOAM/db/dictionary/functionEntries/codeStream/codeStream.C
index 7d78063d5e813024a384e24ad910a2f8a31f8820..de0b87d9ea9c5cd741023259edcc39dc08d42619 100644
--- a/src/OpenFOAM/db/dictionary/functionEntries/codeStream/codeStream.C
+++ b/src/OpenFOAM/db/dictionary/functionEntries/codeStream/codeStream.C
@@ -143,8 +143,8 @@ Foam::functionEntries::codeStream::getFunction
         }
         else
         {
-            // Uncached opening of libPath
-            lib = dlOpen(libPath);
+            // Uncached opening of libPath. Do not complain if cannot be loaded
+            lib = dlOpen(libPath, false);
         }
     }
 
@@ -226,7 +226,7 @@ Foam::functionEntries::codeStream::getFunction
         else
         {
             // Uncached opening of libPath
-            lib = dlOpen(libPath);
+            lib = dlOpen(libPath, true);
         }
     }
 
diff --git a/src/OpenFOAM/db/dynamicLibrary/dlLibraryTable/dlLibraryTable.C b/src/OpenFOAM/db/dynamicLibrary/dlLibraryTable/dlLibraryTable.C
index f3628f20813cadd3feea787deb5feda4bbb1a464..48bc178ac6a3749157d7bc35c925ba02ffaa45fa 100644
--- a/src/OpenFOAM/db/dynamicLibrary/dlLibraryTable/dlLibraryTable.C
+++ b/src/OpenFOAM/db/dynamicLibrary/dlLibraryTable/dlLibraryTable.C
@@ -78,7 +78,7 @@ bool Foam::dlLibraryTable::open
 {
     if (functionLibName.size())
     {
-        void* functionLibPtr = dlOpen(functionLibName);
+        void* functionLibPtr = dlOpen(functionLibName, verbose);
 
         if (debug)
         {
diff --git a/src/OpenFOAM/include/OSspecific.H b/src/OpenFOAM/include/OSspecific.H
index d39a1c54cbb2e4b931cdf768215525a23ef14e3a..14052f8a87654a2d78f452cdec44172af2de7cb8 100644
--- a/src/OpenFOAM/include/OSspecific.H
+++ b/src/OpenFOAM/include/OSspecific.H
@@ -197,8 +197,9 @@ bool ping(const string&, const label timeOut=10);
 //- Execute the specified command
 int system(const std::string& command);
 
-//- open a shared library. Return handle to library
-void* dlOpen(const fileName& lib);
+//- open a shared library. Return handle to library. Print error message
+//  if library cannot be loaded (check = true)
+void* dlOpen(const fileName& lib, const bool check = true);
 
 //- Close a dlopened library using handle. Return true if successful
 bool dlClose(void*);