diff --git a/CMakeLists.txt b/CMakeLists.txt
index f65eae2487967dcaacfcdfc26b3fa10e908d7341..10995874eee7a8e98af24091f2cd63a3536fb7bc 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1421,6 +1421,9 @@ if(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
       list(APPEND LINK_LIBRARIES ${RT_LIB})
     endif(RT_LIB)
   endif(HAVE_OCC)
+  if(CMAKE_C_COMPILER_ID MATCHES "GNU")
+    add_definitions(-fPIC)
+  endif(CMAKE_C_COMPILER_ID MATCHES "GNU")
 endif(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
 
 # we could specify include dirs more selectively, but this is simpler
diff --git a/Geo/MElement.cpp b/Geo/MElement.cpp
index 52e8153362d92b35f43d2bdc83bd36ce2ac09d86..bb9ecbe93a0fd6020a722609be1a8ff86910dfa2 100644
--- a/Geo/MElement.cpp
+++ b/Geo/MElement.cpp
@@ -236,7 +236,11 @@ double MElement::maxDistToStraight() const
 
 double MElement::minAnisotropyMeasure()
 {
+#if defined(HAVE_MESH)
   return jacobianBasedQuality::minAnisotropyMeasure(this);
+#else
+  return 0.;
+#endif
 }
 
 void MElement::scaledJacRange(double &jmin, double &jmax, GEntity *ge) const
diff --git a/Numeric/MetricBasis.cpp b/Numeric/MetricBasis.cpp
index 7294c03275df59cd0422d75e306c668a34e07e5e..decce19cb3bf0c2bb3f17388ff5b5229c5fca25b 100644
--- a/Numeric/MetricBasis.cpp
+++ b/Numeric/MetricBasis.cpp
@@ -716,8 +716,10 @@ bool MetricBasis::validateBezierForMetricAndJacobian()
 
       elements[iel] = el;
     }
+#if defined(HAVE_PLUGINS)
     GMSH_AnalyseCurvedMeshPlugin plugin = GMSH_AnalyseCurvedMeshPlugin();
     plugin.test(elements, numElem, dim);
+#endif
   }